对MySQL结果进行排序,以便在最后显示的两列中的任意一列中生成具有特定值的结果

时间:2013-04-15 13:21:27

标签: mysql sql

假设这是一个名为fixtures的表:

id | team1 | team2
1  | 25    | 40
2  | 10    | 0
3  | 13    | 8
4  | 0     | 18
5  | 32    | 12

我需要以这样的方式对结果进行排序:team1为0或team2的行最后为0。其他行的顺序无关紧要,只要它们都在具有至少一个0的那些行之前。0行相对于彼此的顺序也无关紧要。因此,对于上面的示例,输出行ID的顺序应该类似于:

1, 3, 5, 2, 4

我知道在获得所有结果后我可以在PHP中执行此操作,但我想知道是否有办法在查询中执行此操作。

注意:所有其他值(除了0)只能是正整数。

1 个答案:

答案 0 :(得分:3)

尝试一下,

SELECT  ID
FROM    TableName
ORDER   BY (LEAST(team1, team2) = 0), ID

输出

╔════╗
║ ID ║
╠════╣
║  1 ║
║  3 ║
║  5 ║
║  2 ║
║  4 ║
╚════╝