我不确定这是否可行 - 我一直试图让这个与CASE声明一起使用,但我没有运气。
我有大约7个列,每个列都有一个false / true值,用于不同的状态,例如:
MA VT CT DE
0 1 0 0
1 0 0 0
我想做的是根据STATE对行进行排序。每次我在CASE语句中尝试多个列时,都会在PHPmyAdmin中出现错误。在下面的示例中,我只是尝试对两种状态进行排序以使语法正确。不确定是不是我,或者这是不可能的:
SELECT
*
FROM
tblState D
ORDER BY
case when MA then 1 else 0 end
case when VT then 2 else 0 end
ASC
有什么想法吗?
答案 0 :(得分:1)
您正在使用多个案例陈述,根据您的问题,可以在一个案例陈述中完成
SELECT
*
FROM
tblState D
ORDER BY
case when MA then 1
when VT then 2
else 0
end
ASC
答案 1 :(得分:1)
为什么不这样做,假设你想按字母顺序排列状态:
order by CT desc, DE desc, MA desc, VT desc
答案 2 :(得分:0)
根据您的方法(SQLFiddle Demo),这对您有用:
SELECT
*
FROM
tblState
ORDER BY
CASE MA WHEN 1 THEN MA END DESC,
CASE VT WHEN 1 THEN VT END DESC,
CASE CT WHEN 1 THEN CT END DESC,
CASE DE WHEN 1 THEN DE END DESC
更简单的方法就像戈登·林诺夫告诉你的那样:
order by CT desc, DE desc, MA desc, VT desc