繁体   English   中英

选择带有WHERE子句问题的MySQL中的随机条目

[英]Selecting random entry in MySQL with WHERE clause problem

我正在运行以下代码以从字典中获取随机条目:

SELECT * FROM tbl_dict WHERE 1 ORDER BY RAND() LIMIT 1

这很好用,但是一旦我在那里扩展WHERE子句,查询就会失败。 我需要的是...

SELECT * FROM tbl_dict WHERE 1 and lock='0' ORDER BY RAND() LIMIT 1

谁能指出我哪里出问题了? 我的主意转向花生酱。

谢谢!

锁是MySQL的保留字 如果要将其用作标识符,则必须将其放在反引号(`)或双引号(在ansi模式下)中。

您可能也对http://jan.kneschke.de/projects/mysql/order-by-rand感兴趣。
就速度而言,在您的情况下,ORDER BY Rand()可能不太理想。

没关系,这对您要执行的操作是错误的。

您的表上确实有一个合成的auto_incremented id列,对吗?

如果是这样,那为什么不呢:

  select * from tbl_dict where id 
   = (select floor( rand() * ( max(b.id) + 1) ) from tabl_dict b );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM