【问题标题】:How to order mysql query results by random() and by another field?如何通过 random() 和另一个字段对 mysql 查询结果进行排序?
【发布时间】:2014-06-19 12:55:01
【问题描述】:

我有以下随机排序结果的查询:

$sql = "SELECT *, `active` FROM `profiles` WHERE CONCAT(',' , pfCategory , ',') LIKE '%$category%' AND `active`='1' ORDER BY RAND()";

我想在profiles 表中添加一个布尔字段,这样随机列表中值为 1 的随机结果将出现在值为 0 的结果之上。那可能吗?谢谢

【问题讨论】:

  • 是的,您为什么不先自己尝试一下,然后告诉我们您尝试后遇到的问题。

标签: php mysql sql random sql-order-by


【解决方案1】:

尝试使用以下查询:

$sql = "SELECT *, `active` FROM `profiles` WHERE CONCAT(',' , pfCategory , ',') LIKE '%$category%' AND `active`='1' ORDER BY boolean_field_name DESC, RAND()";

【讨论】:

    【解决方案2】:

    你可以使用

    $sql = "SELECT *, `active` FROM `profiles` WHERE CONCAT(',' , pfCategory , ',') LIKE '%$category%' AND `active`='1' ORDER BY active, RAND()";
    

    如果 Active 是用于排序的字段。

    最好的问候, 内博伊萨

    【讨论】:

      【解决方案3】:

      你可以在这里使用一个案例

       order by case when `active`='1' then 0
                     else rand() end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多