บทความนี้แนะนำวิธีสุ่มเลือกข้อมูลจากตาราง MySQL โดยใช้ ORDER BY RAND() ร่วมกับ LIMIT 3 เพื่อดึง 3 แถวแบบสุ่ม
สร้างตารางและข้อมูลทดสอบ
mysql> CREATE TABLE DemoTable646 (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstName VARCHAR(100)
);
Query OK, 0 rows affected (0.76 sec)
mysql> INSERT INTO DemoTable646(FirstName) VALUES('John');
mysql> INSERT INTO DemoTable646(FirstName) VALUES('Bob');
mysql> INSERT INTO DemoTable646(FirstName) VALUES('Chris');
mysql> INSERT INTO DemoTable646(FirstName) VALUES('David');
mysql> INSERT INTO DemoTable646(FirstName) VALUES('Bob');
mysql> INSERT INTO DemoTable646(FirstName) VALUES('Carol');
mysql> INSERT INTO DemoTable646(FirstName) VALUES('Mike');
คิวรีสุ่ม 3 แถว
mysql> SELECT FirstName FROM DemoTable646 ORDER BY RAND() LIMIT 3;
ผลลัพธ์ตัวอย่าง (จะเปลี่ยนทุกครั้งที่รัน)
+-----------+
| FirstName |
+-----------+
| Mike |
| John |
| Chris |
+-----------+
คำเตือน: ORDER BY RAND() อาจช้าสำหรับตารางขนาดใหญ่ เนื่องจากต้องสุ่มค่าให้ทุกแถวก่อนจึงจะเรียงลำดับได้ สำหรับตารางใหญ่ควรใช้วิธีอื่น เช่นสุ่ม Primary Key ก่อนแล้วค่อย JOIN