SQL IN Operator

در زبان SQL برای فیلتر کردن رکوردها با چند مقدار مشخص، از IN Operator استفاده می‌کنیم. این عملگر بررسی می‌کنه که مقدار یک ستون در یک لیست از مقادیر وجود داره یا نه.

🔹 ساختار کلی

SELECT column1, column2, ... FROM table_name WHERE column_name IN (value1, value2, ...);

عملگر IN یعنی: اگر مقدار ستون برابر هر کدوم از مقادیر داخل پرانتز بود، اون ردیف انتخاب بشه.

🔹 مثال ساده

جدول: Customers

idnamecity
1AliTehran
2SaraMashhad
3RezaIsfahan
4NargesTabriz

کوئری:

SELECT name, city FROM Customers WHERE city IN ('Tehran', 'Tabriz');

📌 خروجی:

namecity
AliTehran
NargesTabriz

توضیح: فقط ردیف‌هایی که city برابر Tehran یا Tabriz هست انتخاب میشه.

🔹 استفاده از NOT IN

برای پیدا کردن ردیف‌هایی که برابر هیچکدوم از مقادیر نباشند:

SELECT name, city FROM Customers WHERE city NOT IN ('Tehran', 'Tabriz');

📌 خروجی:

namecity
SaraMashhad
RezaIsfahan


🔹 استفاده از Subquery

می‌تونیم به جای لیست مقادیر، یک زیرکوئری بنویسیم:

SELECT name FROM Customers WHERE id IN (SELECT customer_id FROM Orders);

اینجا IN چک می‌کنه که id هر مشتری داخل نتایج زیرکوئری هست یا نه.

نکات مهم

  • IN برای لیست‌های کوتاه خیلی خواناست و بهتر از چندین شرط OR پشت سر همه.

  • اگه لیست خیلی بزرگ باشه، از نظر کارایی ممکنه بهتر باشه به جای IN از JOIN استفاده کنید.

  • NOT IN در صورت وجود مقدار NULL داخل لیست، ممکنه نتیجه غیرمنتظره بده؛ حتماً داده‌های NULL رو مدیریت کنید.