02.28 如何利用SQL随机查询出指定数量的数据?

码农的世界电脑技巧


善用mysql提供的函数,rand()!

select * from a where 1=1 order by rand() limit 5 ;


keyber全栈工程师


一般select id from table order by rand() limit 5就行,但如果数据多,这种rand效率非常低,速度很慢。如果是页面展现随机数据,那就等崩了。

一般会取表中最大id,在其中取个随机数,然后再用id取。如果数据多,这种查询效率也许可以提升几十倍。可以自己explain看是否走索引。

sql写法比较多,类似用join

select id from table t1 join (select round(rand()*(select max(id ) from table)) as id2) as t2 on t1.id>t2.id2 limit 5


仙而不废


虽说都是使用 SQL, 但是不同的数据库完成这个操作的写法是不同的, 以50条为例.

MySQL

Select * from [表名] where [条件] order by rand() limit 50

SQL Server

Select top 50 * from [表名] group by [Id] order by NEWID()


太尉行书


可以用mysql的随机函数试试

select * from table

order by rand()

limit 100

表示从table表中随机取100条数据出来


春林子0


如果是使用的oracle,就可以直接使用下面的方法

select * from 表名 where 条件 and rownum = 5;

mysql 参照执行


分享到:


相關文章: