Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào chúng ta có thể nhận được tập hợp các hàng hoặc giá trị khác nhau ngẫu nhiên mỗi lần từ bảng MySQL?


Khi chúng ta sử dụng hàm RAND () cùng với cả mệnh đề ORDER BY và LIMIT trong một truy vấn, MySQL sẽ trả về tập hợp các hàng hoặc giá trị khác nhau mỗi lần. Để hiểu nó, hãy xem một bảng 'Nhân viên' có các bản ghi sau -

mysql> Select * from Employee;
+----+--------+--------+
| 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   |
+----+--------+--------+
8 rows in set (0.00 sec)

Bây giờ, truy vấn bên dưới sẽ sử dụng hàm RAND () với cả mệnh đề ORDER BY và LIMIT trong một truy vấn trả về tập giá trị hoặc hàng khác nhau một cách ngẫu nhiên -

mysql> Select * from employee ORDER BY RAND() LIMIT 4;
+----+-------+--------+
| ID | Name  | Salary |
+----+-------+--------+
| 5  | Ram   | 20000  |
| 4  | Aarav | 65000  |
| 6  | Mohan | 30000  |
| 8  | Vinay | NULL   |
+----+-------+--------+
4 rows in set (0.00 sec)

mysql> Select * from employee ORDER BY RAND() LIMIT 4;
+----+--------+--------+
| ID | Name   | Salary |
+----+--------+--------+
| 6  | Mohan  | 30000  |
| 8  | Vinay  | NULL   |
| 2  | Rahul  | 20000  |
| 1  | Gaurav | 50000  |
+----+--------+--------+
4 rows in set (0.03 sec)

mysql> Select * from employee ORDER BY RAND() LIMIT 4;
+----+-------+--------+
| ID | Name  | Salary |
+----+-------+--------+
| 3  | Advik | 25000  |
| 8  | Vinay | NULL   |
| 7  | Aryan | NULL   |
| 5  | Ram   | 20000  |
+----+-------+--------+
4 rows in set (0.00 sec)

Có thể quan sát thấy từ các tập kết quả ở trên rằng mỗi khi chúng tôi chạy truy vấn, nó sẽ trả về một tập giá trị hoặc hàng khác nhau ngẫu nhiên.