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

如何在SQL中结合时间与布尔字段实现二次排序

你可以直接在ORDER BY子句中增加isDone作为第一排序条件,修改后的语句如下:

SELECT * FROM matches WHERE isVisible = 1 ORDER BY isDone ASC, schedule ASC

逻辑说明

  • 第一排序优先级为isDone升序:MySQL中BOOLEAN类型本质是TINYINT,isDone=0的数值小于isDone=1,所以所有未结束的赛事会统一排在结果前半段,已结束的赛事自动排在后半段
  • 第二排序优先级为schedule升序:相同isDone状态的赛事会按照原定的时间正序排列,和你之前的排序逻辑保持一致

如果需要兼容其他不支持BOOLEAN直接排序的数据库,也可以用CASE语句写通用版本:

SELECT * FROM matches 
WHERE isVisible = 1 
ORDER BY 
  CASE WHEN isDone = 1 THEN 1 ELSE 0 END ASC,
  schedule ASC

内容的提问来源于stack exchange,提问作者Evelyn Woodley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:15:07