【问题标题】:Order by something, then random?按东西排序,然后随机?
【发布时间】:2011-09-13 00:31:15
【问题描述】:

我有一个查询,如下所示:

..ORDER BY photo.sort_order DESC, profile.description DESC, RAND()

也就是说,首先显示带有照片的记录,然后是带有描述的记录。其中我希望顺序是随机的(因此,如果有十条带照片的记录,它们应该始终位于顶部但随机排序)

上述方法不起作用,我知道 rand() 在性能方面不是很好。另一个简单的解决方案是什么?

【问题讨论】:

  • 在什么情况下不起作用?
  • 顺序不变

标签: mysql sql


【解决方案1】:

可能想要稍微改变一下你的选择,以将 desc txt 排除在等式之外,因为你只对它是否为空感兴趣。

 select photo.sort_order,
        profile.description is not null as desc_order,
        profile.description,
        rand() as r
 from
        photo photo, profile profile
order by 
        photo.sort_order desc, 
        desc_order desc, 
        r

【讨论】:

  • 如果您不需要实际值,我不必将 desc_order 和 r 添加到 select 子句中,因为它会增加正在传输的数据量。只需将表达式本身添加到 order by 子句即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
  • 2012-11-19
  • 2023-03-10
  • 2015-10-19
  • 1970-01-01
相关资源
最近更新 更多