复制代码
代码如下:
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.GroupNamesql语句: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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)