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

MySQL-এ নির্দিষ্ট একটি রো ও অন্য একটি র‍‍্যান্ডম রো সিলেক্ট করা


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()-এ সাজায়।

  1. MySQL-এ একটি ফিল্ড সিলেক্ট করুন, যদি NULL হয় তবে অন্যটি সিলেক্ট করুন

  2. MySQL-এ LIMIT ও OFFSET ব্যবহার করে ব্যাচewise রো সিলেক্ট করা

  3. MySQL-এ সাবকোয়েরি, MIN/MAX ও UNION ALL ব্যবহার করে সর্বোচ্চ ও সর্বনিম্ন বেতনवाले কর্মচারী বের করা

  4. MySQL-এ UPDATE ... WHERE ব্যবহার করে নির্দিষ্ট সারি ও কলাম আপডেট করুন