Home >Database >Mysql Tutorial >从mysql数据表中随机取出一条记录

从mysql数据表中随机取出一条记录

WBOY
WBOYOriginal
2016-06-07 16:18:541607browse

当然最后我的一段代码有错误的,并不是真正意义上的随机取数据。回到家,赶快百度,这才知道了如何随机取数据.. 其余代码不多说,这里就告诉你这句核心查找数据表代码: 代码如下 select* from 表名 order by rand( ) limit 1; //此处的1就是取出数据的条数

   当然最后我的一段代码有错误的,并不是真正意义上的随机取数据。回到家,,赶快百度,这才知道了如何随机取数据..

  其余代码不多说,这里就告诉你这句核心查找数据表代码:

 代码如下  

select * from 表名 order by rand( ) limit 1;  //此处的1就是取出数据的条数

  但这样取数据网上有人说效率非常差的,那么要如何改进呢

  搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据。

 代码如下  

SELECT *
FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 5;

  但是这样获得的是5条连续的记录。解决办法只能是每次查询一条,查询5次,但这个又不能满足我的要求了,我要一次找几条

  高效写法

 代码如下  

SELECT * FROM user  WHERE userId >= ((SELECT MAX(userId) FROM user )-(SELECT MIN(userId) FROM user )) * RAND() + (SELECT MIN(userId) FROM user )  LIMIT 5

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn