【发布时间】:2011-05-11 05:53:15
【问题描述】:
我想这样做
SELECT *
FROM Thoughts
ORDER BY RAND()
LIMIT 1 WHERE ups > 5
...但它返回一个错误。你知道周围的替代方案吗?我对 MySQL 有点陌生,谢谢。
【问题讨论】:
标签: sql mysql random mysql-error-1064
我想这样做
SELECT *
FROM Thoughts
ORDER BY RAND()
LIMIT 1 WHERE ups > 5
...但它返回一个错误。你知道周围的替代方案吗?我对 MySQL 有点陌生,谢谢。
【问题讨论】:
标签: sql mysql random mysql-error-1064
按 rand() 排序可能会导致性能问题,请尝试以下方式:
// what NOT to do:
$r = mysql_query("SELECT * FROM Thoughts WHERE ups > 5 ORDER BY RAND() LIMIT 1");
// much better:
$r = mysql_query("SELECT count(*) FROM Thoughts WHERE ups > 5 ");
$d = mysql_fetch_row($r);
$rand = mt_rand(0,$d[0] - 1);
$r = mysql_query("SELECT * FROM Thoughts WHERE ups > 5 LIMIT $rand, 1");
【讨论】:
子句的顺序很重要。做
SELECT * FROM Thoughts WHERE ups > 5 ORDER BY RAND() LIMIT 1
另外,将来,请发布您遇到的错误。 “一个错误”非常不具体。
【讨论】: