2012-02-27 127 views
6

我有一個情況我需要它是由字段的組合他們的「身份」到我的記錄進行排序。下面是一個例子,應該如何返回按狀態排序結果按升序排列:mysql命令由多個case語句

 |  Sent  Received   Approved 
-------------------------------------------------- 
record1 |  null  null    null 
record2 | 2012-01-01  null    null 
record3 | 2012-01-01 2012-01-01   null 
record4 | 2012-01-01 2012-01-01  2012-01-01 

我將如何創建一個MySQL查詢,將通過他們的整體「狀態」命令這些記錄?

+0

如何 「狀態」 來計算? – Maciej 2012-02-27 17:22:10

+0

「狀態」是發送,接收和批准的組合。所以發送的記錄應該是第一個,等等......就像上面的例子。 – Andrew 2012-02-27 17:35:18

回答

11
order by 
    case when sent is null and received is null and approved is null then 1 
     when received is null and approved is null then 2 
     when approved is null then 3 
     else 4 end 
+1

我發現了一個錯誤,每當我試圖通過一個case語句命令:'列未找到:1054未知列「CASE WHEN ... END」在「爲了clause'' – Andrew 2012-02-27 17:30:28

+0

@Andrew,然後我將添加「案「作爲列名稱給你的select語句,給它一個列名,例如」as MyOrderCol「,並且你的order by子句引用那個...比如」order by MyOrderCol「。如果您有與本案的錯誤時,它可能是因爲你所提供的示例名稱不在源表中的實際列,但別名結果的列名 – DRapp 2012-02-27 17:56:57

+0

case語句移動到select語句似乎來解決這個問題。 – Andrew 2012-02-27 18:01:23