মূল কন্টেন্টে যান
মডিউল 4 · 1-এর পাঠ 4কোর্সে 13/57~8 min
মডিউল পাঠ (1/4)

তালিকা এবং ব্যাপ্তি: IN এবং এর মধ্যে

আগের মডিউলগুলিতে আপনি সমতা ব্যবহার করে WHERE দিয়ে ফিল্টার করেছেন এবং তুলনা: salary > 30000, department_id = 1, hired_on >= '2020-01-01'। কিন্তু যখন শর্ত হয়ে যায় "মান অবশ্যই এই পাঁচটির মধ্যে একটি হতে হবে", শৃঙ্খলিত ORs পাইল আপ:

SQL
-- Heavy and fragile: adding a department means touching the query
SELECT first_name, last_name
FROM   employees
WHERE  department_id = 1
   OR  department_id = 2
   OR  department_id = 3;

এসকিউএল এটি পাঠযোগ্য করার জন্য দুটি শর্টকাট অফার করে।

IN - "এর মধ্যে একটি"

IN (...) অপারেটর মানগুলির একটি তালিকা নেয় এবং true প্রদান করে যদি কলাম তাদের any এর সমান:

SQL
SELECT first_name, last_name, department_id
FROM   employees
WHERE  department_id IN (1, 2, 3);

এটি শব্দার্থগতভাবে উপরের ORs এর সাথে অভিন্ন, কিন্তু অনেক বেশি পাঠযোগ্য: এটি স্বাভাবিকভাবেই "যেখানে department_id আছে (1, 2, 3)" হিসেবে পড়ে। এটাও কাজ করে স্ট্রিং এবং তারিখ সহ:

SQL
SELECT name
FROM   departments
WHERE  city IN ('Milano', 'Roma');

এছাড়াও আছে NOT IN (...), যা বিপরীত করে:

SQL
-- Employees who are NOT in Engineering or Sales:
SELECT first_name, last_name
FROM   employees
WHERE  department_id NOT IN (1, 2);

BETWEEN — "A এবং B এর মধ্যে, উভয়ই অন্তর্ভুক্ত"

যখন শর্তটি একটি অবিচ্ছিন্ন পরিসর (সংখ্যা, তারিখ) এর পরিবর্তে লেখা column >= A AND column <= B আপনার কাছে আছে BETWEEN A AND B:

SQL
-- Employees with a salary between 30000 and 50000 (both inclusive):
SELECT first_name, last_name, salary
FROM   employees
WHERE  salary BETWEEN 30000 AND 50000;

BETWEEN উভয় প্রান্তেই অন্তর্ভুক্ত। এটা দিয়ে খুব সুন্দরভাবে কাজ করে তারিখগুলিও:

SQL
-- Everyone hired in 2020:
SELECT first_name, last_name, hired_on
FROM   employees
WHERE  hired_on BETWEEN '2020-01-01' AND '2020-12-31';

চেষ্টা করে দেখুন

ব্যায়াম#sql.m4.l1.e1
প্রচেষ্টা: 0লোড হচ্ছে...

30000 থেকে 50000 এর মধ্যে বেতন সহ কর্মচারীদের প্রথম নাম (first_name), পদবী (last_name) এবং বেতন (বেতন) দেখান। তিনটি কলাম।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

30000 এবং 50000-এর মধ্যে ব্যবহার করুন — AND দ্বারা যুক্ত হওয়া দুটি তুলনার চেয়ে বেশি কম্প্যাক্ট এবং পঠনযোগ্য।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম পর্যালোচনা করুন

ব্যায়াম#sql.m4.l1.e2
প্রচেষ্টা: 0লোড হচ্ছে...

1, 2 বা 4 বিভাগে কর্মরত কর্মচারীদের প্রথম নাম (first_name) এবং পদবী (last_name) তালিকাভুক্ত করুন (IN ব্যবহার করুন)। পদবি দ্বারা বর্ণানুক্রমিকভাবে অর্ডার করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

WHERE Department_id IN (1, 2, 4) হল তিনটি OR-এর কম্প্যাক্ট সংস্করণ।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ