2012-02-27 101 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