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;
و در نتیجه:
مثال زیر از برابری ( = ) و 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);
و در نتیجه:

توی این مثال، تمامی کاربرایی که شناسشون 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;
ور در نتیجه:

چون دستور بالا لیستی از 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 و کاراییش بحث کردیم و یاد گرفتیم چطور ازش استفاده کنیم.