使用WHERE子句问题在MySQL中选择随机条目

时间:2009-04-29 14:47:36

标签: php mysql

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

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

有人能指出我哪里出错了吗?我的思绪转向了花生酱。

谢谢!

2 个答案:

答案 0 :(得分:5)

对于MySQL,

lock是reserved word。如果要将其用作标识符,则必须将其置于反引号(`)或双引号(ansi模式)中。

您可能也对http://jan.kneschke.de/projects/mysql/order-by-rand感兴趣 在速度方面,ORDER BY Rand()在你的情况下可能会或者可能不是太不理想。

答案 1 :(得分:0)

没关系,这对你要做的事情是错误的。

你的桌子上有一个合成的auto_incremented id列,对吗?

如果是的话,为什么不呢:

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