【问题标题】:MySQL - getting from random column but specifying amountsMySQL - 从随机列获取但指定数量
【发布时间】:2011-05-11 05:53:15
【问题描述】:

我想这样做

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

...但它返回一个错误。你知道周围的替代方案吗?我对 MySQL 有点陌生,谢谢。

【问题讨论】:

    标签: sql mysql random mysql-error-1064


    【解决方案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");    
    

    【讨论】:

      【解决方案2】:

      子句的顺序很重要。做

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

      另外,将来,请发布您遇到的错误。 “一个错误”非常不具体。

      【讨论】:

      • 谢谢,我没有把它命名为“错误”,不知道你在说什么?
      • @someWalri - “..但它返回一个错误。” ...这应该是返回的确切错误消息。 “一个错误”没有提供有用的信息。
      • 啊,对不起。估计我很着急!不过谢谢,现在可以了。
      • @someWalri - 是的,不用担心。只是想帮助您解决未来的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2013-07-06
      相关资源
      最近更新 更多