You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何实现多列全0行后置其余随机排序的SQL查询

MySQL多字段排序查询方案

你可以直接使用如下SQL语句实现需求,注意将your_table替换为实际的表名:

SELECT * 
FROM your_table
ORDER BY 
  (chat = 0 AND video = 0 AND call = 0) ASC,
  RAND();

逻辑说明

  • MySQL中布尔表达式的结果会隐式转换为整数:表达式成立时返回1,不成立时返回0。(chat = 0 AND video = 0 AND call = 0)这个判断,在三个字段取值全为0时返回1,其余场景返回0。按该值升序排序时,非全0的行会排在全0行之前。
  • 第二个排序条件RAND()会为每一行生成随机浮点数,同分组内的行按随机值排序,实现随机排列的效果。

小提示:如果你的表数据量超过10万行,RAND()的随机排序性能会有所下降,小数据量场景下该写法可以直接正常使用。

内容的提问来源于stack exchange,提问作者Tushar Agrawal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:06:03