【问题标题】:Mysql query rand() and order byMysql 查询 rand() 和 order by
【发布时间】:2012-12-28 05:23:59
【问题描述】:

您好,我正在尝试获取一些按位置 ASC 排序的随机结果。

这是我的查询:

SELECT `location`, `route`
FROM (`foo`)
WHERE `location` != ''
ORDER BY  RAND(), `location` ASC
LIMIT 8 

问题是它随机获取但不按“位置”ASC 排序,如果我这样做:

SELECT `location`, `route`
FROM (`foo`)
WHERE `location` != ''
ORDER BY  `location` ASC,RAND()
LIMIT 8 

它不是随机的。

我怎样才能同时获得RAND()ORDER BY location ASC

【问题讨论】:

    标签: mysql sql random sql-order-by


    【解决方案1】:

    您需要嵌套语句/查询:

    SELECT *
    FROM (
        SELECT `location`, `route`
        FROM `foo`
        WHERE `location` != ''
        ORDER BY RAND()
        LIMIT 8) AS `temp`
    ORDER BY `location` ASC;
    

    【讨论】:

    • 我需要 4 分钟来接受答案,无论如何这完全解决了!真的谢谢!
    • 请注意,如果您的表非常大,此方法将非常非常慢 - 即使使用 LIMIT 8,它也需要全表扫描
    猜你喜欢
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    相关资源
    最近更新 更多