MySQL-এ ORDER BY (condition) DESC, RAND() দিয়ে নির্দিষ্ট + র্যান্ডম
একটি নির্দিষ্ট রো (যেমন Id=5) সবসময় প্রথমে পাওয়া যায়, বাকি থেকে র্যান্ডমভাবে কিছু রো নেওয়ার জন্য ORDER BY (Id=5) DESC, RAND() ট্রিক ব্যবহার করা হয়।
সিনট্যাক্স
SELECT * FROM yourTableName ORDER BY (idColumn = specificValue) DESC, RAND() LIMIT 0, totalRows;
উদাহরণ সহ ব্যাখ্যা
টেবিল তৈরি ও ডেটা:
mysql> CREATE TABLE oneSpecificRowAndOtherRandom (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(20)
-> );
mysql> INSERT INTO oneSpecificRowAndOtherRandom(Name) VALUES
-> ('Larry'),('Sam'),('Mike'),('Carol'),('Chris'),('Bob'),('David');
Id=5 (Chris) সবসময় প্রথমে, বাকি ২টি র্যান্ডম (LIMIT 3):
mysql> SELECT * FROM oneSpecificRowAndOtherRandom
-> ORDER BY (Id = 5) DESC, RAND() LIMIT 0, 3;
ফলাফল (প্রথম রান):
+----+-------+ | Id | Name | +----+-------+ | 5 | Chris | | 1 | Larry | | 2 | Sam | +----+-------+
দ্বিতীয় রান (RAND() পরিবর্তন):
+----+-------+ | Id | Name | +----+-------+ | 5 | Chris | | 2 | Sam | | 4 | Carol | +----+-------+
ব্যাখ্যা: (Id=5) বুলিয়ান এক্সপ্রেশন। Id=5 হলে ১ (TRUE), অন্যথায় ০ (FALSE)। DESC দিয়ে TRUE (১) আগে আসে। বাকি গুলো RAND()-এ সাজায়।