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