عملگر تعلق: IN و NOT IN در SQL
در SQL، از عملگرهای IN
و NOT IN
برای فیلتر کردن نتایج بر اساس یک لیست از مقادیر استفاده میشود. این عملگرها به شما امکان میدهند تا بررسی کنید که آیا یک مقدار خاص در یک لیست از مقادیر وجود دارد یا خیر.
عملگر IN
عملگر IN
برای بررسی اینکه آیا یک مقدار در یک لیست از مقادیر وجود دارد استفاده میشود. اگر مقدار مورد نظر در لیست وجود داشته باشد، شرط TRUE
میشود و رکورد مربوطه در نتیجه نمایش داده میشود.
مثال:
فرض کنید جدولی به نام employees
داریم و میخواهیم اطلاعات کارمندانی که در دپارتمانهای ۱، ۲ یا ۳ کار میکنند را دریافت کنیم.
SELECT *
FROM employees
WHERE department_id IN (1, 2, 3);
این کوئری تمام رکوردهایی را برمیگرداند که department_id
آنها برابر با ۱، ۲ یا ۳ باشد.
عملگر NOT IN
عملگر NOT IN
برعکس IN
عمل میکند. این عملگر برای بررسی اینکه آیا یک مقدار در یک لیست از مقادیر وجود ندارد استفاده میشود. اگر مقدار مورد نظر در لیست وجود نداشته باشد، شرط TRUE
میشود و رکورد مربوطه در نتیجه نمایش داده میشود.
مثال:
فرض کنید میخواهیم اطلاعات کارمندانی را دریافت کنیم که در دپارتمانهای ۱، ۲ یا ۳ کار نمیکنند.
SELECT *
FROM employees
WHERE department_id NOT IN (1, 2, 3);
این کوئری تمام رکوردهایی را برمیگرداند که department_id
آنها برابر با ۱، ۲ یا ۳ نباشد.
نکات مهم:
- مقادیر
NULL
: اگر در لیستIN
یاNOT IN
مقادیرNULL
وجود داشته باشد، رفتار این عملگرها ممکن است غیرمنتظره باشد. به ویژه،NOT IN
در صورتی که لیست شاملNULL
باشد، ممکن است هیچ رکوردی را برنگرداند. - بهینهسازی: استفاده از
IN
وNOT IN
میتواند بر عملکرد کوئری تأثیر بگذارد، به ویژه زمانی که لیست مقادیر بزرگ باشد. در برخی موارد، استفاده ازJOIN
یاEXISTS
ممکن است بهینهتر باشد.
مثال با NULL
:
SELECT *
FROM employees
WHERE department_id NOT IN (1, 2, NULL);
این کوئری ممکن است هیچ رکوردی را برنگرداند، زیرا NOT IN
با NULL
به درستی کار نمیکند.
جایگزین NOT IN
با NOT EXISTS
:
در مواردی که لیست مقادیر شامل NULL
است، میتوان از NOT EXISTS
به جای NOT IN
استفاده کرد.
SELECT *
FROM employees e
WHERE NOT EXISTS (
SELECT 1
FROM departments d
WHERE d.department_id = e.department_id
AND d.department_id IN (1, 2, 3)
);
این کوئری کارمندانی را برمیگرداند که در دپارتمانهای ۱، ۲ یا ۳ کار نمیکنند و با مشکل NULL
مواجه نمیشود.
با استفاده از این عملگرها، میتوانید کوئریهای قدرتمند و انعطافپذیری در SQL بنویسید.
دیدگاه شما