ใช้ ORDER BY RAND() LIMIT 1 เพื่อสุ่ม 1 แถวจากตาราง
ไวยากรณ์
SELECT * FROM yourTableName ORDER BY RAND() LIMIT 1;
ตัวอย่างการใช้งาน
สร้างตาราง generateRandomRow:
mysql> CREATE TABLE generateRandomRow (
-> Id INT NOT NULL AUTO_INCREMENT,
-> Name VARCHAR(20),
-> Age INT,
-> PRIMARY KEY(Id)
-> );
เพิ่มข้อมูล 7 แถว:
mysql> INSERT INTO generateRandomRow(Name, Age) VALUES('John',23),('Larry',21),('David',21),('Carol',24),('Bob',27),('Mike',29),('Sam',26);
ข้อมูลทั้งหมด
+----+-------+------+ | Id | Name | Age | +----+-------+------+ | 1 | John | 23 | | 2 | Larry | 21 | | 3 | David | 21 | | 4 | Carol | 24 | | 5 | Bob | 27 | | 6 | Mike | 29 | | 7 | Sam | 26 | +----+-------+------+
คำสั่งสุ่ม 1 แถว (รันครั้งแรก)
mysql> SELECT * FROM generateRandomRow ORDER BY RAND() LIMIT 1;
+----+------+------+ | Id | Name | Age | +----+------+------+ | 5 | Bob | 27 | +----+------+------+
รันอีกครั้ง (ได้แถวต่างกัน)
mysql> SELECT * FROM generateRandomRow ORDER BY RAND() LIMIT 1;
+----+------+------+ | Id | Name | Age | +----+------+------+ | 6 | Mike | 29 | +----+------+------+
⚠️ คำเตือน: ORDER BY RAND() ช้าในตารางใหญ่ (Full Table Scan) สำหรับ Production ให้ใช้วิธีอื่น เช่นสุ่ม Primary Key แล้ว WHERE IN