码农的世界电脑技巧
善用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 参照执行