
MySQL ORDER BY随机简介
MySQL ORDER BY随机是一种MySQL技术,用于从特定MySQL数据库的表中随机查询数据记录。这个MySQL命令有助于非系统地获取带有ORDER BY子句的表行。例如,假设我们需要使用这个MySQL ORDER BY Random来从表中选择以下记录。
- 一个博客中的几个随机帖子,并在特定的侧边栏中显示它们。
- 一个随机的报价,用于呈现,"每日最新报价",像在小部件部分。
- 在一个画廊中的随机图片,并将它们作为高亮的图片来实现。
基本上,在MySQL中,没有任何内置的语句可以从数据库表中选择非计划的表行。因此,为了这个目的,我们将应用MySQL的RAND()函数。
语法
让我们来看看显示ORDER BY RAND()函数工作的基本语法结构。
SELECT * FROM TableName ORDER BY RAND() LIMIT1;
对上述语法查询的解释。
- MySQL RAND()函数负责为每个表行产生一个随机值。
- 之后,ORDER BY子句有助于按照MySQL中RAND()函数产生的随机值或数字对所有表的行进行排序。
- 接下来是LIMIT子句,它在一组随机排序的结果中挑选出初始表行。
假设,如果你想从数据库中的表中选择数值为'n'的随机记录行,那么我们需要修改LIMIT子句的值,如下所示。
SELECT * FROM TableName ORDER BY RAND() LIMIT N;
ORDER BY Random在MySQL中是如何工作的?
- 在MySQL中,ORDER BY RAND()技术的作用是选择列值或从数据库表中随机显示的记录。SELECT语句被用来查询这种技术。
- 我们将使用特定的函数RAND()对MySQL中的查询获取的记录进行排序。特别是,我们可以在建立音乐播放器时使用这种方法来洗刷歌曲列表,以便每个新的播放列表从数据库中的歌曲中产生,而不是以前的列表。
- 这种随机选择记录的程序使其对数据行数较少的表很有用。此外,它在查询执行和结果显示方面的工作速度很快。
- 但是,当用于一个大表时,这可能会减慢使用ORDER BY RAND()函数的执行过程。这是因为MySQL需要对整个表进行排序以找出随机值,这也是很耗时的。
- 因此,这个命令查询的速度将取决于数据库表中的可用行数。因此,如果表由更多的记录组成,那么它将需要更多的时间在结果集中产生每行的随机值。
MySQL ORDER BY随机的例子
我们将用下面的例子来评估这种MySQL技术的演示。
例子#1 - 使用ORDER BY RAND()
让我们来看看一个名为Employees的数据库表,它有EmpID、EmpName、EmpProfile、EmpSalary、EmpPF等字段。
select * from employees;

假设我们使用下面的查询,以随机的方式从这个表中获取三条雇员记录。
SELECT EmpID, EmpName, EmpProfile FROM Employees ORDER BY RAND() LIMIT 3;
输出。

我们可以看到,由于使用了随机结果查询,所提供的结果与一般的结果有些不同。
示例#2 - 使用ORDER BY RAND()和INNER子句
在这个例子中,我们需要一个演示表,其字段有属性。PRIMARY KEY和自动增量。另外,在顺序系列中不应该有间隙。
现在,在主键表列的基础上,我们写了下面的查询来产生随机数行值。
SELECT ROUND( RAND() * (SELECT MAX(Col_ID) FROM TableName)) AS Col_ID;
有了上述查询提供的结果集,我们将按以下方式加入表。
SELECT y.* FROM TableName AS y INNER JOIN (SELECT ROUND( RAND() * (SELECT MAX(Col_ID) FROM TableName) ) AS Col_ID ) AS x WHERE y.Col_ID>= x.Col_ID LIMIT 1;
应用这个过程,我们需要执行一次以上的命令来随机获取多条记录。这是因为增加命令的限制将只提供从随机选择的行开始的序列行。
SELECT y.EmpID, y.EmpName FROM Employees AS y JOIN (SELECT ROUND( RAND() * (SELECT MAX(EmpID) FROM Employees) ) AS EmpID) AS x WHERE y.EmpID >= x.EmpID LIMIT 1;
输出。

例子#3 - 使用子查询的ORDER BY RAND()
通过前面的查询技术,我们可以应用子查询来进行随机排序,并按升序或降序查看名称,如下所示。
SELECT * FROM (SELECT * FROM Employees ORDER BY RAND() LIMIT 5)Empsub ORDER BY EmpName;
输出。

例子#4 - 使用ORDER BY RAND()使用变量
假设数据库表包括一个id列,其值落在1,...,n的范围内,并且不包含gab。那么我们需要按照以下步骤进行。
首先,在1,...,n范围内选择随机数。
接下来,我们将在随机数的基础上选择记录。为了实现这一目标,我们将使用后面的查询。
SELECT TableName.* FROM (SELECT ROUND( RAND() * (SELECT MAX(Col_ID) FROM TableName) ) RandomVal, @val:=@val + 1 FROM (SELECT @val:=0)AS y , TableName LIMIT n )AS x, TableName AS a WHERE x.RandomVal = a.Col_ID;
记住,用户定义的变量是已知的特定连接。这就意味着,在实施连接池的同时,不能实施继任技术。为此,我们还必须确认指定的表中具有PRIMARY KEY的列字段应该是数据类型为整数。除此以外,表的列值也应该在定义的系列中,而不是有任何空白。
总结
MYSQL ORDER BY RAND()对于显示随机排序的结果至关重要。就像任何与文章、网页、链接等有关的信息,我们希望以随机排序的方式从几个数据库中显示出来。
这种技术在MySQL中意义重大,但同时,如果一个表中的表是大尺寸的,那么应用于它的ORDER BY RAND()将耗费时间来生成结果。否则,对于具有较少记录的表,可以得到更快的结果。
推荐文章
这是一个关于MySQL ORDER BY Random的指南。在这里,我们讨论了如何在MySQL中进行ORDER BY随机工作,以及与输出有关的例子。你也可以看看下面的文章以了解更多------。