عضویت (In)
در SQL، عملگر «عضویت (IN)» چند مقدار را یکجا چک می کند. این یعنی یک «یا (OR)» فشرده و خوانا. مثل بررسی حضور نام ها در یک لیست کلاس.
عملگر IN چیست؟
IN داخل شرط WHERE می آید و با یک لیست مقایسه می کند. این کار خوانایی را بالا می برد و خطاها را کمتر می کند.
مثال ساده از IN
مشتری های آلمان، فرانسه یا بریتانیا را برگردان.
SELECT *
FROM Customers;
WHERE Country IN ('Germany', 'France', 'UK');
سینتکس IN
الگوی کلی به شکل زیر است. جایگزین ORهای زیاد می شود.
SELECT column_name(s)
FROM table_name;
WHERE column_name IN (value1, value2, ...);
وارونگی با NOT IN
NOT IN یعنی «عضو لیست نباشد». نتیجه ها برعکس می شوند.
SELECT *
FROM Customers;
WHERE Country NOT IN ('Germany', 'France', 'UK');
IN همراه زیردرخواست (Subquery)
با زیردرخواست، از نتایج پرس وجوی دیگر استفاده کن. مثل لیست سفارش دهندگان.
SELECT *
FROM Customers;
WHERE CustomerID IN (
SELECT CustomerID
FROM Orders
);
NOT IN همراه زیردرخواست
اینجا دنبال مشتری هایی می گردیم که هرگز سفارشی ندارند.
SELECT *
FROM Customers;
WHERE CustomerID NOT IN (
SELECT CustomerID
FROM Orders
);
نکته: اگر زیردرخواست مقدار NULL بدهد، NOT IN می تواند نتیجه را مبهم کند. بهتر است NULLها را فیلتر کنی.
برای فیلترهای متنی، صفحه ی الگویابی با LIKE مفید است. برای بازه ها، صفحه ی Between را ببین. همین صفحه ی عضویت با IN مرجع جمع وجور است.
گام های تمرینی سریع
- یک IN ساده با سه مقدار بنویس.
- همان را به NOT IN تغییر بده.
- نسخه ی زیردرخواست را تست کن.
جمع بندی سریع
- IN جایگزین چند OR است.
- NOT IN نتیجه را برعکس می کند.
- با زیردرخواست بسیار قدرتمند می شود.
- حواست به NULL در NOT IN باشد.