دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
بررسی نحوه ایجاد Job در SQL Server
1404/11/20 -
Expression Func در سی شارپ
1404/11/19 -
آشنایی با خصوصیتهای Agent در SQL Server
1404/11/19 -
مقایسه دو لیست در سیشارپ
1404/11/18 -
Queue در سی شارپ چیست؟
1404/11/17
عملگر IN در SQL
عملگر IN در پایگاه داده SQL
عملگر IN در SQL برای بررسی این که یک مقدار مشخص در یک مجموعه از مقادیر قرار دارد یا نه، استفاده میشود.
این عملگر معمولاً در بخش WHERE یک کوئری به کار میرود و جایگزینی خواناتر و بهینهتر برای چندین شرط OR است.
IN میتواند با یک لیست ثابت از مقادیر یا یک زیردستور (subquery) که مجموعهای از دادهها را برمیگرداند، استفاده شود.
به عنوان مثال، دستور زیر تمام کاربرانی را انتخاب میکند که UserID آنها برابر با یکی از مقادیر مشخصشده باشد:
SELECT * FROM Users WHERE UserID IN (101, 102, 103);
یکی از کاربردهای رایج IN استفاده از آن همراه با زیردستور برای فیلتر کردن دادهها بر اساس نتایج یک کوئری دیگر است.
این روش زمانی مفید است که بخواهیم بررسی کنیم آیا مقدار یک ستون در خروجی یک کوئری دیگر وجود دارد یا نه.
به عنوان مثال، برای نمایش تمام مشتریانی که سفارشی ثبت کردهاند، میتوان از کوئری زیر استفاده کرد:
SELECT * FROM Customers
WHERE CustomerID IN (SELECT CustomerID FROM Orders);
در این مثال، ابتدا زیردستور فهرست CustomerIDهای جدول Orders را استخراج میکند و سپس این مقادیر برای فیلتر کردن مشتریان در جدول Customers استفاده میشوند.
ساختار عمومی عملگر IN
ساختار عمومی عملگر IN به صورت زیر است:
SELECT column1, column2, ...
FROM table_name
WHERE column_name IN (value1, value2, ..., valueN);
در اینجا، column_name نام ستونی است که میخواهید مقادیر آن را بررسی کنید و (value1, value2, ..., valueN) مجموعهای از مقادیر است که میخواهید با آن مقایسه کنید.
مزایای عملگر IN در پایگاه داده SQL
-
کاهش پیچیدگی
جایگزین خواناتر و سادهتر برای چندین شرط OR است. -
بهینهتر در عملکرد
در برخی موارد سریعتر از استفاده از چندین OR عمل میکند. -
قابل استفاده با زیردستورها
امکان بررسی مقادیر موجود در نتایج یک subquery را فراهم میکند. -
افزایش خوانایی کد
کوئریها را خلاصهتر و قابل فهمتر میکند.
مثال ساده از استفاده از IN
فرض کنید شما یک پایگاه داده با جدول employees دارید که شامل اطلاعات کارکنان یک شرکت است.
هر رکورد در این جدول شامل فیلدهایی مانند employee_id, first_name, last_name و department_id است.
حال اگر بخواهید تمام کارکنانی را که در دپارتمانهای خاصی کار میکنند، پیدا کنید، میتوانید از عملگر IN استفاده کنید.
SELECT first_name, last_name, department_id
FROM employees
WHERE department_id IN (1, 3, 5);
در اینجا، با استفاده از عملگر IN، ما تمام کارکنانی که در دپارتمانهای با شناسههای ۱، ۳ یا ۵ کار میکنند را جستجو کردهایم.
.این عملگر بسیار کارآمد است زیرا به شما این امکان را میدهد که چندین مقدار را بدون نیاز به استفاده از چندین شرط OR مقایسه کنید.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟
با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!
این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.
با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.
پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
همین حالا شروع کنید و به دنیای دادهها بپیوندید!
استفاده از IN با زیرپرس و مقادیر محاسباتی
عملگر IN نه تنها میتواند با مقادیر ثابت استفاده شود، بلکه میتواند با نتایج یک زیرپرسش (subquery) نیز ترکیب شود.
زیرپرسشها به شما این امکان را میدهند که نتایج جستجو را بهصورت دینامیک و از دیگر جداول یا دادهها دریافت کنید.
فرض کنید شما میخواهید لیست کارکنانی را دریافت کنید که در دپارتمانهایی کار میکنند که بیش از ۱۰ نفر پرسنل دارند.
در این حالت میتوانید از یک زیرپرسش برای دریافت شناسههای دپارتمانها استفاده کنید.
SELECT first_name, last_name, department_id
FROM employees
WHERE department_id IN (SELECT department_id
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 10);
در اینجا، زیرپرسش ابتدا شناسههای دپارتمانهایی که بیش از ۱۰ کارمند دارند را استخراج کرده و سپس در پرسش اصلی از آنها استفاده میکنیم.
استفاده از IN برای فیلتر کردن تاریخها و دادههای دیگر
عملگر IN نه تنها برای مقایسه دادههای عددی یا متنی مناسب است، بلکه میتواند برای فیلتر کردن تاریخها، اعداد و رشتهها نیز بهخوبی استفاده شود.
بهعنوان مثال، اگر بخواهید رکوردهایی را پیدا کنید که تاریخ آنها در بازهای خاص قرار دارد، میتوانید از عملگر IN به شکل زیر استفاده کنید:
SELECT order_id, order_date, total_amount
FROM orders
WHERE order_date IN ('2025-01-01', '2025-02-01', '2025-03-01');
در این مثال، تنها سفارشهایی که تاریخ آنها یکی از تاریخهای مشخصشده است، بازیابی میشوند.
نکات و محدودیتهای عملگر IN
در حالی که عملگر IN بسیار مفید است، باید به چند نکته توجه داشته باشید:
-
کاهش کارایی پایگاه داده
استفاده از IN با تعداد زیاد مقادیر میتواند کارایی پایگاه داده را کاهش دهد.
اگر تعداد مقادیر زیاد باشد، ممکن است پایگاه داده بهطور قابل توجهی کند شود. -
NULL
عملگر IN هنگام مقایسه با NULL رفتار خاصی دارد.
برای بررسی مقدار NULL در SQL، از عملگر IS NULL باید استفاده کنید.
برای مثال:
SELECT first_name, last_name
FROM employees
WHERE department_id IN (NULL, 3, 5);
در اینجا، SQL تنها مقادیر معتبر (۳ و ۵) را بررسی میکند و NULL را نادیده میگیرد.
بنابراین، اگر میخواهید رکوردهایی با مقدار NULL را پیدا کنید، باید از IS NULL استفاده کنید.
مثال پروژهمحور از عملگر IN در SQL
فرض کنید در یک سیستم فروشگاهی آنلاین، میخواهید گزارشی از مشتریانی تهیه کنید که محصولاتی خاص را خریداری کردهاند.
در این مثال، از IN برای فیلتر کردن مشتریانی که حداقل یکی از محصولات مشخصشده را سفارش دادهاند، استفاده میکنیم.
سناریو
مدیر فروشگاه میخواهد لیست تمام مشتریانی را ببیند که محصولاتی از دستهبندی الکترونیک (مثلاً لپتاپ، گوشی، هدفون) خریداری کردهاند.
این اطلاعات در سه جدول ذخیره شده است:
-
Customers(CustomerID, Name, Email) → اطلاعات مشتریان
-
Orders(OrderID, CustomerID, OrderDate) → اطلاعات سفارشات
-
OrderDetails(OrderID, ProductID, Quantity) → جزئیات هر سفارش
-
Products(ProductID, Name, Category, Price) → اطلاعات محصولات
کوئری پروژهای با IN
SELECT DISTINCT C.CustomerID, C.Name, C.Email
FROM Customers C
JOIN Orders O ON C.CustomerID = O.CustomerID
JOIN OrderDetails OD ON O.OrderID = OD.OrderID
WHERE OD.ProductID IN (SELECT ProductID FROM Products WHERE Category = 'Electronics');
تحلیل کد
-
ابتدا CustomerID، Name، Email را از جدول Customers انتخاب میکنیم.
-
با JOIN بین Customers و Orders ارتباط بین مشتریان و سفارشات را برقرار میکنیم.
-
سپس جدول OrderDetails را به سفارشات متصل میکنیم تا بدانیم هر سفارش شامل چه محصولاتی است.
-
در قسمت WHERE از IN استفاده کردهایم تا فقط مشتریانی را انتخاب کنیم که ProductID آنها در لیست محصولات دسته Electronics قرار دارد.
این کوئری لیستی از مشتریانی را نمایش میدهد که حداقل یکی از محصولات الکترونیکی فروشگاه را خریداری کردهاند.
دوره های مرتبط
آموزش پایگاه داده SqlServer
پایگاه داده Sqlserver یکی از پایگاه داده های مهم برای ذخیره اطلاعات محسوب میشود .










