IN কী?
একটি কলামের মান কয়েকটি মানের যেকোনো একটির সাথে মিলছে কিনা দেখতে IN ব্যবহার করি। অনেকগুলো OR লেখার বদলে একটি IN লিখলেই চলে।
সিনট্যাক্স
WHERE [কলামের নাম] IN ([মান ১], [মান ২], ...)
উদাহরণ ১: লেখার তালিকা
Arts অথবা Commerce গ্রুপের শিক্ষার্থী খুঁজি। আগের পাঠে এটি OR দিয়ে করেছিলাম।
SELECT *
FROM student
WHERE group_name IN ('Arts', 'Commerce');IN→তালিকার যেকোনো মানের সাথে মিললে সারিটি আসবে('Arts', 'Commerce')→মানের তালিকা, বন্ধনীর মধ্যে কমা দিয়ে
| roll | name | class | section | group_name |
|---|---|---|---|---|
| 2 | Habib | 12 | A | Commerce |
| 3 | Pappu | 11 | B | Arts |
| 5 | Priya | 11 | A | Commerce |
এটি 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);| roll | subject_code | marks |
|---|---|---|
| 1 | 275 | 88 |
| 1 | 174 | 82 |
| 1 | 101 | 76 |
| 2 | 275 | 78 |
| 2 | 253 | 75 |
| 2 | 109 | 72 |
| 3 | 275 | 29 |
| 3 | 304 | 65 |
| 3 | 101 | 60 |
| 4 | 275 | 31 |
| 4 | 174 | 90 |
| 4 | 101 | 70 |
| 5 | 275 | 65 |
| 5 | 253 | 84 |
| 5 | 109 | 80 |
| roll | subject_code | marks |
|---|---|---|
| 1 | 174 | 82 |
| 2 | 253 | 75 |
| 2 | 109 | 72 |
| 3 | 304 | 65 |
| 4 | 174 | 90 |
| 5 | 253 | 84 |
| 5 | 109 | 80 |
BETWEEN কী?
একটি মান দুটি সীমার মধ্যে আছে কিনা দেখতে BETWEEN ব্যবহার করি। দুই সীমার মানও ফলাফলে আসে।
সিনট্যাক্স
WHERE [কলামের নাম] BETWEEN [ছোট মান] AND [বড় মান]
উদাহরণ ৩: নম্বরের সীমা
যেসব রেজাল্টে নম্বর ৭০ থেকে ৮০ এর মধ্যে, সেগুলো দেখি।
SELECT *
FROM result
WHERE marks BETWEEN 70 AND 80;BETWEEN 70 AND 80→৭০ থেকে ৮০, দুই সীমাসহAND→এখানে AND দুই সীমাকে আলাদা করে
| roll | subject_code | marks |
|---|---|---|
| 1 | 275 | 88 |
| 1 | 174 | 82 |
| 1 | 101 | 76 |
| 2 | 275 | 78 |
| 2 | 253 | 75 |
| 2 | 109 | 72 |
| 3 | 275 | 29 |
| 3 | 304 | 65 |
| 3 | 101 | 60 |
| 4 | 275 | 31 |
| 4 | 174 | 90 |
| 4 | 101 | 70 |
| 5 | 275 | 65 |
| 5 | 253 | 84 |
| 5 | 109 | 80 |
| roll | subject_code | marks |
|---|---|---|
| 1 | 101 | 76 |
| 2 | 275 | 78 |
| 2 | 253 | 75 |
| 2 | 109 | 72 |
| 4 | 101 | 70 |
| 5 | 109 | 80 |
৭০ (roll 4, Bangla) এবং ৮০ (roll 5, Economics) দুটোই এসেছে। তাই এই Query আর marks >= 70 AND marks <= 80 একই ফলাফল দেয়।
আরও একটি উদাহরণ: NOT BETWEEN
যেসব রেজাল্ট ৪০ থেকে ৮৫ এর বাইরে, অর্থাৎ খুব কম বা খুব বেশি নম্বর।
SELECT *
FROM result
WHERE marks NOT BETWEEN 40 AND 85;| roll | subject_code | marks |
|---|---|---|
| 1 | 275 | 88 |
| 3 | 275 | 29 |
| 4 | 275 | 31 |
| 4 | 174 | 90 |
- IN এর তালিকা বন্ধনীর মধ্যে, কমা দিয়ে আলাদা করে লিখতে হয়। লেখা হলে প্রতিটি মান সিঙ্গেল কোটে।
- BETWEEN এ ছোট মান আগে, বড় মান পরে লিখতে হয়। BETWEEN 80 AND 70 লিখলে কোনো সারি আসবে না।
- BETWEEN দুই সীমার মানও ধরে।
অনুশীলন
প্রতিটি প্রশ্নের Query নিজে লেখো। চাইলে SQL Playground এ টেবিল তৈরি করে চালিয়ে দেখো। তারপর উত্তর মিলিয়ে নাও।
roll 1, 3 ও 5 এর শিক্ষার্থীদের তথ্য দেখাও।
উত্তর দেখো
SELECT * FROM student WHERE roll IN (1, 3, 5);| roll | name | class | section | group_name |
|---|---|---|---|---|
| 1 | Rudra | 11 | A | Science |
| 3 | Pappu | 11 | B | Arts |
| 5 | Priya | 11 | A | Commerce |
যেসব রেজাল্টে নম্বর ৬০ থেকে ৭৫ এর মধ্যে, সেগুলো দেখাও।
উত্তর দেখো
SELECT *
FROM result
WHERE marks BETWEEN 60 AND 75;| roll | subject_code | marks |
|---|---|---|
| 2 | 253 | 75 |
| 2 | 109 | 72 |
| 3 | 304 | 65 |
| 3 | 101 | 60 |
| 4 | 101 | 70 |
| 5 | 275 | 65 |
Dhaka বা Khulna তে থাকে এমন শিক্ষার্থীর roll ও address দেখাও।
উত্তর দেখো
SELECT roll, address
FROM contact
WHERE address IN ('Dhaka', 'Khulna');| roll | address |
|---|---|
| 4 | Dhaka |
| 5 | Khulna |
Common ও Science গ্রুপ বাদে বাকি বিষয়গুলোর নাম দেখাও।
উত্তর দেখো
SELECT subject_name
FROM subject
WHERE group_name NOT IN ('Common', 'Science');| subject_name |
|---|
| Accounting |
| Economics |
| History |
