SQL Order By Random
一、SQL Order By Random 语法
如果您希望结果记录随机排序,您应该根据几个数据库使用以下代码。
这里有一个问题:从数据库中获取随机记录或行的需要是什么?
有时您可能希望向您的用户显示随机信息,例如文章、链接、页面等。
如果要从任何数据库中获取随机行,则必须根据数据库使用一些更改的查询。
- 使用 MySQL 选择一个随机行:
如果要使用 MY SQL 返回随机行,请使用以下语法:
SELECT column FROM table ORDER BY RAND () LIMIT 1;
- 使用 Postgre SQL 选择一个随机行:
SELECT column FROM table ORDER BY RANDOM () LIMIT 1;
- 使用 SQL Server 选择随机行:
SELECT TOP 1 column FROM table ORDER BY NEWID ();
- 用 oracle 随机选择一行:
SELECT column FROM (SELECT column FROM table ORDER BY dbms_random.value) WHERE rownum = 1;
- 使用 IBM DB2 随机选择一行:
SELECT column RAND () as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY;
二、SQL Order By Random 示例
为了实际理解这个概念,让我们看一些使用 MySQL 数据库的例子。考虑我们在数据库中创建了一个items 表,其中包含以下数据:
ID | Item_Name | Item_Quantity | Item_Price | Purchase_Date |
---|---|---|---|---|
1 | Soap | 5 | 200 | 2021-07-08 |
2 | Toothpaste | 2 | 80 | 2021-07-10 |
3 | Pen | 10 | 50 | 2021-07-12 |
4 | Bottle | 1 | 250 | 2021-07-13 |
5 | Brush | 3 | 90 | 2021-07-15 |
假设我们要从 items 表中检索任何随机记录。
我们将编写查询如下:
mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1;
我们可能会得到以下结果:
ID | Item_Name | Item_Quantity | Item_Price | Purchase_Date |
---|---|---|---|---|
3 | Pen | 10 | 20 | 2021-07-12 |
现在让我们尝试再次执行相同的查询。
mysql> SELECT * FROM items ORDER BY RAND () LIMIT 1;
我们可能会得到以下结果:
ID | Item_Name | Item_Quantity | Item_Price | Purchase_Date |
---|---|---|---|---|
5 | Brush | 3 | 90 | 2021-07-15 |
从上面的结果中,我们可以得出结论,即使我们执行了两次相同的查询,两次都得到了不同的记录作为输出。RAND () 函数已从单个表中为同一查询两次选择随机记录。因此,即使我们再次执行相同的查询,每次都会得到不同的输出。使用 RAND () 函数连续获取相同记录的可能性很小。
现在,假设您希望随机获取表的所有记录。
为此,我们需要执行以下查询:
mysql> SELECT * FROM items ORDER BY RAND ();
我们可能会得到以下结果:
ID | Item_Name | Item_Quantity | Item_Price | Purchase_Date |
---|---|---|---|---|
4 | Bottle | 1 | 250 | 2021-07-13 |
5 | Brush | 3 | 90 | 2021-07-15 |
1 | Soap | 5 | 200 | 2021-07-08 |
2 | Toothpaste | 2 | 80 | 2021-07-10 |
3 | Pen | 10 | 50 | 2021-07-12 |
如果我们在employees表上再次执行RAND()函数,也有可能得到一些不同的记录排列。
热门文章
优秀文章