Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

สุ่มข้อมูล 3 แถวจากตาราง MySQL ด้วย RAND() และ LIMIT

บทความนี้แนะนำวิธีสุ่มเลือกข้อมูลจากตาราง 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