我想这样做
SELECT *
FROM Thoughts
ORDER BY RAND()
LIMIT 1 WHERE ups > 5
...但是它返回了一个错误。你知道另一种选择吗?我对MySQL有点新鲜,谢谢。
答案 0 :(得分:3)
条款的顺序很重要。做
SELECT * FROM Thoughts WHERE ups > 5 ORDER BY RAND() LIMIT 1
此外,在将来,发布您正在获得的错误。 “错误”非常不明确。
答案 1 :(得分:1)
按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");