0
我有一個'姓名','狀態' - 失敗或成功,'計數'爲1到100的表。我想命令它的名字只有'失敗'應該一起顯示在最前面,然後同名的失敗和成功在一起,然後命名只有一起成功。 我們可以做到sql查詢語言嗎? 謝謝。多重條件下的SQL命令
我有一個'姓名','狀態' - 失敗或成功,'計數'爲1到100的表。我想命令它的名字只有'失敗'應該一起顯示在最前面,然後同名的失敗和成功在一起,然後命名只有一起成功。 我們可以做到sql查詢語言嗎? 謝謝。多重條件下的SQL命令
確定,這應該在大多數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
如果是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
檢查了這一點:http://stackoverflow.com/questions/2758374/tsql-ordering- data-by-specific-string-values基本上,您可以使用'CASE'語句'ORDER BY',後跟名稱和計數。 – Deruijter 2013-02-28 13:15:27
而你正在使用MySQL或SQL Server? (和最新版本?) – Lamak 2013-02-28 13:16:54
根據你的意思,「一起」是指什麼? 「計數」對排序有什麼影響?最好的辦法是提供一個數據的例子,然後是一個預期結果的例子。這會讓你的問題的答案更快。由於每個人的想象力都是獨一無二的,我認爲可以有幾種不同的解決方案和結果,儘管符合你的要求。所以是的,添加一個你想要實現的例子:) – 2013-02-28 13:29:18