MySQL 怎么从MySQL表中每次随机获取不同的行或值集合?
当我们在查询中与ORDER BY和LIMIT子句一起使用RAND()函数时,MySQL将每次返回不同的行或值集合。为了理解它,考虑一个名为“ Employee”的表,其中包含以下记录 –
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行(0.00秒)
现在,以下查询将在查询中使用RAND()函数和ORDER BY和LIMIT子句,每次返回随机不同的值或行集合 –
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行(0.00秒)
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行(0.03秒)
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行(0.00秒)
从上面的结果集中可以观察到,每次运行查询时都会返回随机不同的值或行集合。
阅读更多:MySQL 教程