Return True - SQL - کار با IN در دیتابیس

SQL - کار با IN در دیتابیس

توی این مقاله شما کاربرد IN رو توی Query های Database یاد میگیرین. و اینکه چطور میشه ازش توی WHERE استفاده کرد و اطلاعات مورد نظرمون رو فیلتر کرد.

مقدمه ای بر IN

کاربرد IN توی قسمت WHERE هست و برای اینه که چک کنیم مقادیر آیا توی لیست مقادیر مورد نظر ما هست یا نه.

نحوه استفاده از IN به شکل زیر است:

value IN (value1,value2,...)

نحوه کار IN به این شکله که اگه value توی لیست وجود داشته باشه، مقدار True برمیگردونه.

مقادیر لیست میتونن اعداد، مقادیر رشته (  String  ) و یا نتیجه یک SELECT باشه مثل زیر:

value IN (SELECT column_name FROM table_name);

به Query که توی Query دیگه ای قرار داره میگم SubQuery که توی مقالات بعد در بارش حرف میزنیم.

مثال هایی از  IN

فرض کنین میخوایم از جدول rental که اطلاعات مربوط به اجاره نشین هامون رو نگه میداره، اطلاعات مشتری با شناسه ( id ) شامل 1 , 2 رو ببینیم. برای این موضوع از IN به شکل زیر استفاده میکنیم:

SELECT customer_id,
	rental_id,
	return_date
FROM
	rental
WHERE
	customer_id IN (1, 2)
ORDER BY
	return_date DESC;

و در نتیجه:

SQL - کار با IN در دیتابیسمثال زیر از برابری ( = ) و OR بجای IN استفاده میکنه:

SELECT
	rental_id,
	customer_id,
	return_date
FROM
	rental
WHERE
	customer_id = 1 OR customer_id = 2
ORDER BY
	return_date DESC;

ولی خب استفاده از IN خواناتر و کوچیکتره. ( و همچنین سریعتره )

استفاده از NOT توی IN

میتونیم از NOT استفاده کنیم تا تمامی ردیف هایی رو توی Query برگردونه که توی لیست نباشن. 

مثال زیر رو با هم ببینیم:

SELECT
	customer_id,
	rental_id,
	return_date
FROM
	rental
WHERE
	customer_id NOT IN (1, 2);

و در نتیجه:

SQL - کار با IN در دیتابیس

توی این مثال، تمامی کاربرایی که شناسشون 1 و 2 نیست بهمون نشون داده میشه.

همچنین برای این کار میتونستیم Query رو به این شکل هم بنویسیم:

SELECT
	customer_id,
	rental_id,
	return_date
FROM
	rental
WHERE
	customer_id <> 1
AND customer_id <> 2;

و نتیجه، همون نتیجه دستور قبل هست.

استفاده از Subquery در IN

در واقع توی دستور IN بیشتر از Subquery استفاده میکنیم.

دستور زیر id کاربرانی رو بر میگردونه که زمان بازگرداندنشون 2005-05-27 باشه ( CAST رو بعدا با هم یاد میگیریم )

SELECT customer_id
FROM rental
WHERE CAST (return_date AS DATE) = '2005-05-27'
ORDER BY customer_id;

ور در نتیجه:

SQL - کار با IN در دیتابیس

چون دستور بالا لیستی از id هارو برامون برگردوند، پس میتونیم ازش توی IN استفاده کنیم:

SELECT
	customer_id,
	first_name,
	last_name
FROM
	customer
WHERE
	customer_id IN (
		SELECT customer_id
		FROM rental
		WHERE CAST (return_date AS DATE) = '2005-05-27'
	)
ORDER BY customer_id;

و در نتیجه:

توی این مقاله، در باره IN و کاراییش بحث کردیم و یاد گرفتیم چطور ازش استفاده کنیم.

نظرات