【问题标题】:Get random record in a set of results获取一组结果中的随机记录
【发布时间】:2013-08-08 21:42:04
【问题描述】:

我有一个简单的 MySQL 查询,如下所示:

 SELECT * ,
 ( MATCH (table.get) AGAINST('playstation ' IN BOOLEAN MODE) ) 
+ ( table.get LIKE '%playstation%') AS _score 
FROM table 
JOIN users on table.id_user = users.id
 WHERE table.expire_datetime > 1375997618
 HAVING _score > 0 
ORDER BY RAND(table.id) ,_score DESC ;

如果我在 MySQL 中运行此查询,它通常返回多于 1 条记录,现在我想限制 1 条并随机获取其中一条,而不总是相同的记录。

有可能吗?

【问题讨论】:

  • 在查询中添加LIMIT 1 有什么问题?

标签: mysql sql random


【解决方案1】:
select * from <my_table> 
ORDER BY RAND()
LIMIT 4

【讨论】:

    【解决方案2】:

    您将退出随机数生成器的播种。我的猜测是它返回了遇到的第一个表 id,所以数字是按相同的顺序生成的:

     SELECT * ,
     ( MATCH (table.get) AGAINST('playstation ' IN BOOLEAN MODE) ) 
    + ( table.get LIKE '%playstation%') AS _score 
    FROM table 
    JOIN users on table.id_user = users.id
     WHERE table.expire_datetime > 1375997618
     HAVING _score > 0 
    ORDER BY RAND()
    LIMIT 1;
    

    【讨论】:

      【解决方案3】:

      据我了解,_score 的问题? 试试这个:

      Select * FROM (
         ***your sql query***
      ) as t
      ORDER BY RAND()
      LIMIT 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-15
        • 1970-01-01
        • 2015-03-30
        • 2018-06-06
        • 2011-07-17
        • 2012-09-03
        • 2015-04-12
        • 1970-01-01
        相关资源
        最近更新 更多