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()函数,也有可能得到一些不同的记录排列。 

热门文章

优秀文章