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

เราจะรับชุดของแถวหรือค่าที่แตกต่างกันแบบสุ่มในแต่ละครั้งจากตาราง MySQL ได้อย่างไร


เมื่อเราใช้ฟังก์ชัน RAND() ร่วมกับคำสั่งย่อย ORDER BY และ LIMIT ในเคียวรี MySQL จะส่งกลับชุดของแถวหรือค่าที่ต่างกันในแต่ละครั้ง เพื่อให้เข้าใจว่าตาราง 'พนักงาน' มีบันทึกดังต่อไปนี้ -

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)

ตอนนี้ เคียวรีด้านล่างจะใช้ฟังก์ชัน RAND() ที่มีทั้ง ORDER BY และ LIMIT clause ในเคียวรีส่งคืนชุดค่าหรือแถวที่แตกต่างกันแบบสุ่ม -

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)

สามารถสังเกตได้จากชุดผลลัพธ์ด้านบนว่าทุกครั้งที่เราเรียกใช้แบบสอบถาม จะส่งกลับชุดค่าหรือแถวที่แตกต่างกันแบบสุ่ม