数据库查询排序使用随机排序结果示例(OracleMySQLMS SQL Server)

数据库查询排序使用随机排序结果示例(OracleMySQLMS SQL Server),第1张

Oracle查询结果集,随机排序

复制代码

代码如下:

select

*

from

table1

order

by

dbms_random.value()

MySQL随机查询出一条记录:

复制代码

代码如下:

--

下面的查询语句效率高,不要使用

SELECT

*

FROM

table1

ORDER

BY

rand()

LIMIT

1

来查询

SELECT

*

FROM

table1

WHERE

id=(SELECT

id

FROM

table1

ORDER

BY

rand()

LIMIT

1)

查询结果集,随机排序

复制代码

代码如下:

SELECT

*

FROM

table1

ORDER

BY

rand()

MS

SQL

Server

复制代码

代码如下:

SELECT

*

FROM

Northwind

Orders

ORDER

BY

NEWID()

SELECT

TOP

10

*

FROM

Northwind

Orders

ORDER

BY

NEWID()

可以用Floor与Rand函数嵌套表达式为每行记录生成1-4之间的随机数,然后以该随机数对记录行排序,这样就可将该列数随机分成四组了。当然表的记录行数不能太少,否则无法保证至少有4个组。请参考下列sql实现语句:这里假设表名为t1,字段名为numselect t.* from (select Floor(4* Rand()+1) as GroupName,num from t1) t order by t.GroupName

sql语句:select * from table_name where id=round(rand()*10) order by id desc limit 0,6

注:可以根据你id值的范围调节where条件中随机数值的范围。

这是最简单的方式,不过这个方法可能存在一个问题,就是产生的随机数可能重复,比如随机数出现2次或多次数字3,这样结果中就会有重复的记录。通过sql语句本身如何解决这个问题暂时没想到,这样就只能用另一种方法:先在程序中生成6个不重复的随机数(具体 *** 作比如每个随机数生成出来保存之前先跟之前的所有数比较一下,不重复才保存,重复就重新生成一个),然后再生成sql语句:select * from table_name where id in (1,2,3,4,5,6) order by id desc


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7430037.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存