কম্পিউটার টিউটোরিয়াল

MySQL-এ ORDER BY RAND() এবং LIMIT দিয়ে নির্দিষ্ট নাম ফিক্স করে বাকি র‍্যান্ডম দেখানো

পদ্ধতি

ORDER BY (FirstName='Robert') DESC, RAND() দিয়ে 'Robert' কে সবার উপরে আনা, বাকিগুলো র‍্যান্ডম করে LIMIT 3 নিয়ে আনা।

সারণি ও ডেটা

mysql> create table DemoTable1426 (FirstName varchar(20));
mysql> insert into DemoTable1426 values('John'),('Adam'),('Robert'),('David'),('Sam');

কোয়েরি

mysql> select * from DemoTable1426 order by (FirstName='Robert') desc, RAND() limit 3;

ফলাফল (নমুনা)

+-----------+
| FirstName |
+-----------+
| Robert    |
| Adam      |
| David     |
+-----------+

ব্যাখ্যা

  • (FirstName='Robert') — বুলিয়ান এক্সপ্রেশন, TRUE=1, FALSE=0
  • DESC — ১ (TRUE) আগে আসে, তাই 'Robert' টপে থাকে
  • RAND() — বাকিগুলো র‍্যান্ডমলি সর্ট করে
  • LIMIT 3 — শুধু ৩টি সারি নেয়

সতর্কতা: RAND() বড় টেবিলে ধীর (ফুল টেবিল স্ক্যান)। প্রোডাকশনে বিকল্প পদ্ধতি ব্যবহার করুন।

  1. MySQL-এ একক ফিল্ড দ্বারা অর্ডার করে বাকি রেকর্ডগুলো একই ক্রমে দেখানো

  2. MySQL-এ নির্দিষ্ট ভ্যালু প্রথমে দেখিয়ে বাকি অর্ডার করানো (ORDER BY ট্রিক)

  3. MySQL에서 IS NOT NULL로 NULL 제외하고 NOT NULL 값만 다른 테이블로 복사하기

  4. MySQL-এ নির্দিষ্ট মান ثابت রেখে বাকি সারি র‍্যান্ডমভাবে সর্ট করা