2013-02-28 35 views
0

我有一個'姓名','狀態' - 失敗或成功,'計數'爲1到100的表。我想命令它的名字只有'失敗'應該一起顯示在最前面,然後同名的失敗和成功在一起,然後命名只有一起成功。 我們可以做到sql查詢語言嗎? 謝謝。多重條件下的SQL命令

+0

檢查了這一點:http://stackoverflow.com/questions/2758374/tsql-ordering- data-by-specific-string-values基本上,您可以使用'CASE'語句'ORDER BY',後跟名稱和計數。 – Deruijter 2013-02-28 13:15:27

+1

而你正在使用MySQL或SQL Server? (和最新版本?) – Lamak 2013-02-28 13:16:54

+0

根據你的意思,「一起」是指什麼? 「計數」對排序有什麼影響?最好的辦法是提供一個數據的例子,然後是一個預期結果的例子。這會讓你的問題的答案更快。由於每個人的想象力都是獨一無二的,我認爲可以有幾種不同的解決方案和結果,儘管符合你的要求。所以是的,添加一個你想要實現的例子:) – 2013-02-28 13:29:18

回答

3

確定,這應該在大多數RDBMS工作:

SELECT A.* 
FROM YourTable A 
INNER JOIN (SELECT name, 
        COUNT(DISTINCT status) StatusCount, 
        MIN(status) MinStatus 
      FROM YourTable 
      GROUP BY name) B 
    ON A.name = B.name 
ORDER BY CASE WHEN StatusCount = 1 AND MinStatus = 'fail' THEN 1 
     WHEN StatusCount = 2 THEN 2 
     ELSE 3 END, A.name, A.status 
0

如果是MySQL的

select *, 0 as o 
from t 
union all 
select *, 1 as o 
from t 
order by 
    o = 1 and status != 'fail', o != 1, status = fail