order-by-limit

পাঠ ৭ · ORDER BY ও LIMIT

ORDER BY কী?

ফলাফলের সারিগুলো একটি নির্দিষ্ট ক্রমে সাজাতে ORDER BY ব্যবহার করি। ছোট থেকে বড় সাজাতে ASC, বড় থেকে ছোট সাজাতে DESC লিখি।

  • ASC→ছোট থেকে বড়, A থেকে Z (কিছু না লিখলে এটিই হয়)
  • DESC→বড় থেকে ছোট, Z থেকে A

সিনট্যাক্স

SQL Syntax Rule
SELECT [কলামের নাম]
FROM [টেবিলের নাম]
ORDER BY [কলামের নাম] ASC অথবা DESC;

উদাহরণ ১: নাম অনুযায়ী সাজানো

SELECT * FROM student ORDER BY name;
  • ORDER BY name→name কলাম অনুযায়ী সাজাবে
  • (কিছু না লেখা)→ASC ধরে নেবে, তাই A থেকে Z
ফলাফল৫টি সারি
rollnameclasssectiongroup_name
4Anik12BScience
2Habib12ACommerce
3Pappu11BArts
5Priya11ACommerce
1Rudra11AScience

উদাহরণ ২: বড় থেকে ছোট

ICT (275) বিষয়ে কে কত পেয়েছে, বেশি নম্বর আগে দেখি। WHERE থাকলে ORDER BY বসে WHERE এর পরে।

SELECT roll, marks
FROM result
WHERE subject_code = 275
ORDER BY marks DESC;
ফলাফল৫টি সারি
rollmarks
188
278
565
431
329

উদাহরণ ৩: দুই কলামে সাজানো

আগে class অনুযায়ী সাজাই। একই class এর ভেতরে নাম অনুযায়ী সাজাই।

SELECT name, class
FROM student
ORDER BY class, name;
ফলাফল৫টি সারি
nameclass
Pappu11
Priya11
Rudra11
Anik12
Habib12

class 11 এর তিনজন আগে এসেছে, নিজেদের মধ্যে নামের ক্রমে। তারপর class 12 এর দুজন।

LIMIT কী?

ফলাফলের প্রথম কয়েকটি সারি নিতে LIMIT ব্যবহার করি। ORDER BY এর সাথে মিলিয়ে সর্বোচ্চ বা সর্বনিম্ন কয়েকটি খুঁজে পাওয়া যায়।

SQL Syntax Rule
ORDER BY [কলামের নাম] DESC
LIMIT [কয়টি সারি];

উদাহরণ ৪: সবচেয়ে বেশি নম্বরের ৩টি রেজাল্ট

SELECT * FROM result ORDER BY marks DESC LIMIT 3;
  • ORDER BY marks DESC→আগে বেশি নম্বর থেকে কম নম্বরে সাজায়
  • LIMIT 3→তারপর প্রথম ৩টি সারি নেয়
ফলাফল৩টি সারি
rollsubject_codemarks
417490
127588
525384
মনে রাখো
  • লেখার ক্রম: SELECT → FROM → WHERE → ORDER BY → LIMIT।
  • দুটি সারির মান সমান হলে তাদের নিজেদের মধ্যে ক্রম নিশ্চিত নয়। নিশ্চিত করতে দ্বিতীয় একটি কলাম দাও, যেমন ORDER BY marks DESC, roll।
  • MySQL ও SQLite এ LIMIT চলে। SQL Server এ LIMIT নেই, সেখানে TOP লেখা হয়।

অনুশীলন

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

১

subject টেবিলকে subject_name অনুযায়ী A থেকে Z সাজাও।

উত্তর দেখো
SELECT * FROM subject ORDER BY subject_name;
ফলাফল৬টি সারি
subject_codesubject_namegroup_name
253AccountingCommerce
101BanglaCommon
109EconomicsCommerce
304HistoryArts
275ICTCommon
174PhysicsScience
২

ICT (275) তে সবচেয়ে কম নম্বর পাওয়া ২টি রেজাল্টের roll ও marks দেখাও।

উত্তর দেখো
SELECT roll, marks
FROM result
WHERE subject_code = 275
ORDER BY marks ASC
LIMIT 2;
ফলাফল২টি সারি
rollmarks
329
431
৩

student টেবিল class বড় থেকে ছোট সাজাও। একই class এ roll ছোট থেকে বড় হবে।

উত্তর দেখো
SELECT *
FROM student
ORDER BY class DESC, roll ASC;
ফলাফল৫টি সারি
rollnameclasssectiongroup_name
2Habib12ACommerce
4Anik12BScience
1Rudra11AScience
3Pappu11BArts
5Priya11ACommerce
৪

contact টেবিল address অনুযায়ী Z থেকে A সাজাও।

উত্তর দেখো
SELECT * FROM contact ORDER BY address DESC;
ফলাফল৫টি সারি
contact_idrolladdressmobile_no
1022Narayanganj01822222222
1055Khulna01555555555
1011Gopalganj01711111111
1044Dhaka01644444444
1033Barisal01933333333