我想使用以下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值为零。

最佳答案

可能使用几种情况,每列一个

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

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

10-13 22:11