gpt4 book ai didi

MySQL CASE 不适用于使用两列的 ORDER BY

转载 作者:太空宇宙 更新时间:2023-11-03 11:31:07 24 4
gpt4 key购买 nike

我想使用以下 SQL:

SELECT * FROM Data WHERE tid=1 ORDER BY CASE WHEN round=0 THEN date ELSE round, date END ASC

但由于 round, date 位,它不起作用。如果我使那个位 round 工作正常,例如但不是两者兼而有之。

如果 round=0 那么我希望能够先对 round 进行升序排序,然后对 date 进行排序。这可能吗?

我想要实现的是一个排序的行数组,它首先按 round 排序,然后按 date 排序。但是,如果 round 为零,那么我只希望该行出现在该记录适合的日期之间,即使它的 round 值为零。

最佳答案

case expression 只返回一个值。如果你想首先使用 round = 0 的行,那么你可以这样做:

ORDER BY (CASE WHEN round = 0 THEN 1 ELSE 2 END),
round, date

这可以缩短为:

ORDER BY (round = 0) DESC, round, date

但是,我不能 100% 确定这是您真正想要的。

如果 round 只采用两个值,那么您的问题会更有意义。在这种情况下,您确实希望首先按 date 排序:

ORDER BY date, round;

但是,这是对数据值的推测。

关于MySQL CASE 不适用于使用两列的 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49719830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com