DISTINCT কী?
একটি কলামে একই মান বারবার থাকতে পারে। DISTINCT একই মান একবারই দেখায়। ফলে কোন কোন আলাদা মান আছে তা সহজে বোঝা যায়।
সিনট্যাক্স
SELECT DISTINCT [কলামের নাম] FROM [টেবিলের নাম];
DISTINCT বসে SELECT এর ঠিক পরে, কলামের নামের আগে।
উদাহরণ ১: কোন কোন গ্রুপ আছে
আগে DISTINCT ছাড়া group_name দেখি। student টেবিলে ৫ জন শিক্ষার্থী, তাই ৫টি সারি আসবে। Science ও Commerce দুইবার করে আছে।
SELECT group_name FROM student;| group_name |
|---|
| Science |
| Commerce |
| Arts |
| Science |
| Commerce |
এবার DISTINCT দিয়ে একই Query চালাই।
SELECT DISTINCT group_name FROM student;ব্যাখ্যা
DISTINCT→একই মান একবার দেখাবেgroup_name→যে কলামের আলাদা মানগুলো চাই
ফলাফল
| group_name |
|---|
| Science |
| Commerce |
| Arts |
৫টি সারি থেকে ৩টি সারি হলো। কলেজে তিনটি গ্রুপ আছে: Science, Commerce ও Arts।
উদাহরণ ২: দুই কলামে DISTINCT
DISTINCT এর পরে একাধিক কলাম দিলে পুরো সারির জোড়া দেখে বিচার করে। শুধু একটি কলাম দেখে নয়।
SELECT DISTINCT class, section FROM student;| class | section |
|---|---|
| 11 | A |
| 12 | A |
| 11 | B |
| 12 | B |
Rudra ও Priya দুজনেই class 11, section A তে পড়ে। তাই (11, A) জোড়াটি একবারই এসেছে। ৫ জন থেকে ৪টি সারি হলো।
AS কী?
AS দিয়ে ফলাফলের কলামকে নতুন নাম দেওয়া যায়। এই নামকে alias বলে। alias শুধু ফলাফলের শিরোনাম বদলায়। টেবিলের আসল কলামের নাম বদলায় না।
সিনট্যাক্স
SELECT [কলামের নাম] AS [নতুন নাম] FROM [টেবিলের নাম];
উদাহরণ ৩: কলামের নতুন নাম
SELECT roll AS roll_no, name AS student_name
FROM student;roll AS roll_no→roll কলাম roll_no নামে দেখাবেname AS student_name→name কলাম student_name নামে দেখাবে
| roll_no | student_name |
|---|---|
| 1 | Rudra |
| 2 | Habib |
| 3 | Pappu |
| 4 | Anik |
| 5 | Priya |
আরও একটি উদাহরণ: DISTINCT ও AS একসাথে
subject টেবিলে কোন কোন গ্রুপের বিষয় আছে দেখতে চাই। শিরোনাম হবে group_list।
SELECT DISTINCT group_name AS group_list
FROM subject;| group_list |
|---|
| Common |
| Science |
| Commerce |
| Arts |
student টেবিলের গ্রুপের সাথে তুলনা করো। subject টেবিলে Common নামে একটি বাড়তি গ্রুপ আছে। Bangla ও ICT সব গ্রুপের শিক্ষার্থীর জন্য, তাই এগুলো Common।
- DISTINCT সবসময় SELECT এর ঠিক পরে বসে।
- দুই বা বেশি কলামে DISTINCT দিলে পুরো জোড়া আলাদা হলেই সারিটি আলাদা ধরা হয়।
- alias এ ফাঁকা জায়গা না রাখাই ভালো। student_name লেখো, student name নয়।
অনুশীলন
প্রতিটি প্রশ্নের Query নিজে লেখো। চাইলে SQL Playground এ টেবিল তৈরি করে চালিয়ে দেখো। তারপর উত্তর মিলিয়ে নাও।
result টেবিলে কোন কোন roll এর রেজাল্ট আছে? প্রতিটি roll একবার করে দেখাও।
উত্তর দেখো
SELECT DISTINCT roll FROM result;| roll |
|---|
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
student টেবিলে কোন কোন class আছে দেখাও।
উত্তর দেখো
SELECT DISTINCT class FROM student;| class |
|---|
| 11 |
| 12 |
subject টেবিল থেকে subject_code কে code নামে আর subject_name কে title নামে দেখাও।
উত্তর দেখো
SELECT subject_code AS code, subject_name AS title
FROM subject;| code | title |
|---|---|
| 101 | Bangla |
| 275 | ICT |
| 174 | Physics |
| 253 | Accounting |
| 109 | Economics |
| 304 | History |
result টেবিলে কোন কোন subject_code আছে দেখাও। প্রতিটি কোড একবার করে আসবে।
উত্তর দেখো
SELECT DISTINCT subject_code FROM result;| subject_code |
|---|
| 101 |
| 174 |
| 275 |
| 109 |
| 253 |
| 304 |
