in-between

পাঠ ৫ · IN ও BETWEEN

IN কী?

একটি কলামের মান কয়েকটি মানের যেকোনো একটির সাথে মিলছে কিনা দেখতে IN ব্যবহার করি। অনেকগুলো OR লেখার বদলে একটি IN লিখলেই চলে।

সিনট্যাক্স

SQL Syntax Rule
WHERE [কলামের নাম] IN ([মান ১], [মান ২], ...)

উদাহরণ ১: লেখার তালিকা

Arts অথবা Commerce গ্রুপের শিক্ষার্থী খুঁজি। আগের পাঠে এটি OR দিয়ে করেছিলাম।

SELECT *
FROM student
WHERE group_name IN ('Arts', 'Commerce');
  • IN→তালিকার যেকোনো মানের সাথে মিললে সারিটি আসবে
  • ('Arts', 'Commerce')→মানের তালিকা, বন্ধনীর মধ্যে কমা দিয়ে
ফলাফল৩টি সারি
rollnameclasssectiongroup_name
2Habib12ACommerce
3Pappu11BArts
5Priya11ACommerce

এটি group_name = 'Arts' OR group_name = 'Commerce' এর সমান। কিন্তু লেখা ছোট ও সহজ।

উদাহরণ ২: সংখ্যার তালিকা ও NOT IN

Bangla (101) ও ICT (275) সব গ্রুপের Common বিষয়। এই দুটো বাদে বাকি রেজাল্টগুলো দেখি। তালিকার বাইরের মান চাইলে NOT IN লিখি।

SELECT *
FROM result
WHERE subject_code NOT IN (101, 275);
result (মূল টেবিল)১৫টি সারি
rollsubject_codemarks
127588
117482
110176
227578
225375
210972
327529
330465
310160
427531
417490
410170
527565
525384
510980
↓ WHERE subject_code NOT IN (101, 275)
ফলাফল৭টি সারি
rollsubject_codemarks
117482
225375
210972
330465
417490
525384
510980

BETWEEN কী?

একটি মান দুটি সীমার মধ্যে আছে কিনা দেখতে BETWEEN ব্যবহার করি। দুই সীমার মানও ফলাফলে আসে।

সিনট্যাক্স

SQL Syntax Rule
WHERE [কলামের নাম] BETWEEN [ছোট মান] AND [বড় মান]

উদাহরণ ৩: নম্বরের সীমা

যেসব রেজাল্টে নম্বর ৭০ থেকে ৮০ এর মধ্যে, সেগুলো দেখি।

SELECT *
FROM result
WHERE marks BETWEEN 70 AND 80;
  • BETWEEN 70 AND 80→৭০ থেকে ৮০, দুই সীমাসহ
  • AND→এখানে AND দুই সীমাকে আলাদা করে
result (মূল টেবিল)১৫টি সারি
rollsubject_codemarks
127588
117482
110176
227578
225375
210972
327529
330465
310160
427531
417490
410170
527565
525384
510980
↓ WHERE marks BETWEEN 70 AND 80
ফলাফল৬টি সারি
rollsubject_codemarks
110176
227578
225375
210972
410170
510980

৭০ (roll 4, Bangla) এবং ৮০ (roll 5, Economics) দুটোই এসেছে। তাই এই Query আর marks >= 70 AND marks <= 80 একই ফলাফল দেয়।

আরও একটি উদাহরণ: NOT BETWEEN

যেসব রেজাল্ট ৪০ থেকে ৮৫ এর বাইরে, অর্থাৎ খুব কম বা খুব বেশি নম্বর।

SELECT *
FROM result
WHERE marks NOT BETWEEN 40 AND 85;
ফলাফল৪টি সারি
rollsubject_codemarks
127588
327529
427531
417490
মনে রাখো
  • IN এর তালিকা বন্ধনীর মধ্যে, কমা দিয়ে আলাদা করে লিখতে হয়। লেখা হলে প্রতিটি মান সিঙ্গেল কোটে।
  • BETWEEN এ ছোট মান আগে, বড় মান পরে লিখতে হয়। BETWEEN 80 AND 70 লিখলে কোনো সারি আসবে না।
  • BETWEEN দুই সীমার মানও ধরে।

অনুশীলন

প্রতিটি প্রশ্নের Query নিজে লেখো। চাইলে SQL Playground এ টেবিল তৈরি করে চালিয়ে দেখো। তারপর উত্তর মিলিয়ে নাও।

১

roll 1, 3 ও 5 এর শিক্ষার্থীদের তথ্য দেখাও।

উত্তর দেখো
SELECT * FROM student WHERE roll IN (1, 3, 5);
ফলাফল৩টি সারি
rollnameclasssectiongroup_name
1Rudra11AScience
3Pappu11BArts
5Priya11ACommerce
২

যেসব রেজাল্টে নম্বর ৬০ থেকে ৭৫ এর মধ্যে, সেগুলো দেখাও।

উত্তর দেখো
SELECT *
FROM result
WHERE marks BETWEEN 60 AND 75;
ফলাফল৬টি সারি
rollsubject_codemarks
225375
210972
330465
310160
410170
527565
৩

Dhaka বা Khulna তে থাকে এমন শিক্ষার্থীর roll ও address দেখাও।

উত্তর দেখো
SELECT roll, address
FROM contact
WHERE address IN ('Dhaka', 'Khulna');
ফলাফল২টি সারি
rolladdress
4Dhaka
5Khulna
৪

Common ও Science গ্রুপ বাদে বাকি বিষয়গুলোর নাম দেখাও।

উত্তর দেখো
SELECT subject_name
FROM subject
WHERE group_name NOT IN ('Common', 'Science');
ফলাফল৩টি সারি
subject_name
Accounting
Economics
History