我正在运行以下代码以从字典中获取随机条目:
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
有人能指出我哪里出错了吗?我的思绪转向了花生酱。
谢谢!
答案 0 :(得分:5)
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 );