در MySQL، دو عملگر IN
و BETWEEN
برای فیلتر کردن دادهها بر اساس چند مقدار مشخص یا یک بازه عددی، متنی یا تاریخی استفاده میشوند.
این عملگرها هنگام استفاده در شرط WHERE
، اجرای کوئری را سادهتر و بهینهتر میکنند.
۱. استفاده از عملگر IN
در MySQL
تعریف:
عملگر IN
برای انتخاب مقدارهایی که در یک لیست مشخص قرار دارند استفاده میشود. این عملگر جایگزین کوتاهتر و خواناتر برای استفاده از چندین OR
است.
ساختار کلی:
SELECT column1, column2, ... FROM table_name WHERE column_name IN (value1, value2, value3, ...);
۲. مثالهای کاربردی برای IN
۲.۱. فیلتر کردن دادهها با IN
مثال: نمایش کاربران ساکن در “تهران”، “مشهد” یا “اصفهان”
SELECT * FROM users WHERE city IN ('تهران', 'مشهد', 'اصفهان');
🔹 این کوئری تمام کاربرانی که در یکی از این شهرها زندگی میکنند را نمایش میدهد.
معادل همین کوئری با OR
SELECT * FROM users WHERE city = 'تهران' OR city = 'مشهد' OR city = 'اصفهان';
✅ مزیت IN
→ خوانایی بیشتر و اجرای بهینهتر نسبت به استفاده از چندین OR
.
۲.۲. استفاده از IN
با اعداد
مثال: نمایش محصولاتی که category_id
آنها برابر ۱، ۳ یا ۵ است
SELECT * FROM products WHERE category_id IN (1, 3, 5);
۲.۳. استفاده از IN
با نتایج یک کوئری دیگر
میتوان مقدارهای IN
را از یک کوئری دیگر دریافت کرد.
مثال: نمایش کاربرانی که سفارش دادهاند
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders);
🔹 این کوئری فقط کاربرانی را نمایش میدهد که در جدول orders
، سفارشی ثبت کردهاند.
۲.۴. استفاده از NOT IN
برای انتخاب مقدارهای غیرمجاز
مثال: نمایش کاربرانی که در تهران، مشهد و اصفهان نیستند
SELECT * FROM users WHERE city NOT IN ('تهران', 'مشهد', 'اصفهان');
🔹 این کوئری تمام کاربرانی را نمایش میدهد که در این سه شهر زندگی نمیکنند.
۳. استفاده از عملگر BETWEEN
در MySQL
تعریف:
عملگر BETWEEN
برای انتخاب مقدارهایی که در یک بازه مشخص قرار دارند استفاده میشود. این عملگر دو مقدار حداقل و حداکثر را شامل میشود.
ساختار کلی:
SELECT column1, column2, ... FROM table_name WHERE column_name BETWEEN value1 AND value2;
✅ مقدارهای value1
و value2
شامل نتیجه خواهند شد.
۴. مثالهای کاربردی برای BETWEEN
۴.۱. فیلتر کردن دادههای عددی
مثال: نمایش کاربران با سن بین ۲۰ تا ۳۰ سال
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
🔹 این کوئری کاربرانی را نمایش میدهد که سن آنها بین ۲۰ تا ۳۰ است (۲۰ و ۳۰ هم شامل میشوند).
معادل همین کوئری با >=
و <=
SELECT * FROM users WHERE age >= 20 AND age <= 30;
✅ استفاده از BETWEEN
کد را خواناتر و کوتاهتر میکند.
۴.۲. فیلتر کردن دادههای متنی
مثال: نمایش کاربران با نام خانوادگی بین “الف” تا “م” (ترتیب الفبایی)
SELECT * FROM users WHERE last_name BETWEEN 'الف' AND 'م';
🔹 این کوئری کاربرانی را که نام خانوادگی آنها بین “الف” و “م” (بر اساس ترتیب الفبایی) قرار دارد، نمایش میدهد.
۴.۳. فیلتر کردن دادههای تاریخی
مثال: نمایش سفارشهایی که بین “۲۰۲۴-۰۱-۰۱” تا “۲۰۲۴-۱۲-۳۱” ثبت شدهاند
SELECT * FROM orders WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31';
🔹 این کوئری فقط سفارشهایی را که در طول سال ۲۰۲۴ ثبت شدهاند، نمایش میدهد.
✅ مزیت استفاده از BETWEEN
برای تاریخها → بازه را خواناتر و اجرای کوئری را بهینهتر میکند.
۴.۴. استفاده از NOT BETWEEN
برای نمایش دادههای خارج از یک بازه
مثال: نمایش کاربرانی که سن آنها کمتر از ۲۰ یا بیشتر از ۳۰ سال است
SELECT * FROM users WHERE age NOT BETWEEN 20 AND 30;
🔹 این کوئری کاربرانی را نمایش میدهد که سن آنها خارج از محدوده ۲۰ تا ۳۰ است.
۵. مقایسه IN
و BETWEEN
ویژگی | IN | BETWEEN |
---|---|---|
کاربرد | انتخاب مقدارهای خاص از یک لیست | انتخاب مقدارها در یک بازه مشخص |
نوع داده | عددی، متنی، تاریخ | عددی، متنی، تاریخ |
مثال عددی | WHERE age IN (20, 25, 30) | WHERE age BETWEEN 20 AND 30 |
مثال متنی | WHERE city IN ('تهران', 'مشهد') | WHERE last_name BETWEEN 'الف' AND 'م' |
مثال تاریخی | WHERE order_date IN ('2024-01-01', '2024-06-15') | WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31' |
✅ IN
برای انتخاب مقدارهای مشخص و غیرمتوالی مناسب است.
✅ BETWEEN
برای انتخاب یک بازه متوالی از دادهها کاربرد دارد.
۶. ترکیب IN
و BETWEEN
برای فیلترهای پیشرفته
مثال: نمایش کاربرانی که در شهرهای “تهران”، “مشهد”، “اصفهان” هستند و سن آنها بین ۲۵ تا ۴۰ سال است
SELECT * FROM users
WHERE city IN ('تهران', 'مشهد', 'اصفهان')
AND age BETWEEN 25 AND 40;
🔹 این کوئری کاربرانی که در یکی از این سه شهر زندگی میکنند و سن آنها بین ۲۵ تا ۴۰ سال است را نمایش میدهد.
نتیجهگیری
IN
→ برای انتخاب چند مقدار مشخص از یک لیست استفاده میشود.BETWEEN
→ برای انتخاب مقدارهایی که در یک بازه مشخص قرار دارند به کار میرود.NOT IN
وNOT BETWEEN
برای انتخاب دادههایی که خارج از لیست یا بازه مشخص شده هستند، استفاده میشوند.- ترکیب
IN
وBETWEEN
امکان ایجاد شرطهای پیچیدهتر و دقیقتر را فراهم میکند.
✅ با استفادهی صحیح از IN
و BETWEEN
، میتوان کوئریهای بهینهتر و خواناتری در MySQL نوشت.