MySQL - 从随机列获取但指定金额

时间:2010-11-17 05:16:06

标签: sql mysql random mysql-error-1064

我想这样做

  SELECT * 
    FROM Thoughts 
ORDER BY RAND() 
 LIMIT 1 WHERE ups > 5

...但是它返回了一个错误。你知道另一种选择吗?我对MySQL有点新鲜,谢谢。

2 个答案:

答案 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");