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

ใช้ RAND() ใน ORDER BY สับสนลำดับแถว (Shuffle)

สุ่มลำดับแถวทั้งหมด

ORDER BY RAND() เรียงลำดับแถวแบบสุ่ม

ข้อมูล Employee (8 แถว)

+----+--------+--------+
| ID | Name   | Salary |
+----+--------+--------+
| 1  | Gaurav | 50000  |
| 2  | Rahul  | 20000  |
| 3  | Advik  | 25000  |
| 4  | Aarav  | 65000  |
| 5  | Ram    | 20000  |
| 6  | Mohan  | 30000  |
| 7  | Aryan  | NULL   |
| 8  | Vinay  | NULL   |
+----+--------+--------+

คำสั่ง Shuffle

mysql> SELECT * FROM Employee ORDER BY RAND();
+----+--------+--------+
| ID | Name   | Salary |
+----+--------+--------+
| 4  | Aarav  | 65000  |
| 1  | Gaurav | 50000  |
| 3  | Advik  | 25000  |
| 7  | Aryan  | NULL   |
| 6  | Mohan  | 30000  |
| 8  | Vinay  | NULL   |
| 5  | Ram    | 20000  |
| 2  | Rahul  | 20000  |
+----+--------+--------+

การใช้งาน

  • สุ่มลำดับแสดงผล (Quiz, Survey, Banner rotation)
  • ร่วม LIMIT สำหรับ Random sampling
  • ไม่ต้องมี WHERE clause

ประสิทธิภาพ

  • ต้อง Generate RAND() ทุกแถว + Filesort
  • ตารางใหญ่ ใช้ WHERE RAND() < 0.01 ORDER BY RAND() LIMIT 10 แทน