Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Xáo trộn thứ tự bản ghi trong bảng MySQL

Sử dụng ORDER BY RAND() để trả về kết quả ngẫu nhiên mỗi lần chạy truy vấn.

Tạo bảng và dữ liệu

mysql> CREATE TABLE DemoTable792(Name VARCHAR(100), Subject VARCHAR(100)); 
Query OK, 0 rows affected (0.66 sec)

mysql> INSERT INTO DemoTable792 VALUES 
('Chris','MySQL'), ('David','MySQL'), ('Robert','MongoDB'), ('Carol','MongoDB'); 
Query OK, 4 rows affected

Truy vấn xáo trộn ngẫu nhiên

mysql> SELECT * FROM DemoTable792 ORDER BY RAND();

Kết quả (ví dụ một lần chạy):

+--------+---------+
| Name   | Subject |
+--------+---------+
| Chris  | MySQL   |
| Robert | MongoDB |
| David  | MySQL   |
| Carol  | MongoDB |
+--------+---------+

⚠️ Cảnh báo hiệu năng: ORDER BY RAND() rất chậm trên bảng lớn vì phải sinh số ngẫu nhiên cho mọi hàng rồi sắp xếp. Với bảng >10k hàng, hãy cân nhắc:

  • Lấy MAX(id), sinh random trong ứng dụng, rồi WHERE id >= random_id LIMIT 1
  • Dùng TABLESAMPLE (MySQL 8.0.13+) cho sampling thống kê