2013-05-27 53 views
0

我有數據設置如下,進行邏輯檢查分組查詢結果

job_id | status 
-------|------- 
    100 | 0 
    100 | 0 
    102 | 1 
    102 | 0 
    104 | 1 
    104 | 1 
--------------- 

查詢處理數據

SELECT job_id, (CASE WHEN FIND_IN_SET(0, GROUP_CONCAT(status)) > 0 THEN FALSE ELSE TRUE END) AS isfinished 
FROM mytable 
GROUP BY job_id 

,其結果是

job_id | isfinished 
-------|----------- 
    100 |  0 
    102 |  0 
    104 |  1 
------------------- 

有任何人都做過這個?也許有更好的方法。

+0

你到底想幹什麼? – hims056

回答

0

它看起來像你想看看如果最小值是大於0

SELECT job_id, min(status) > 0 AS isfinished 
FROM mytable 
GROUP BY job_id; 

http://sqlfiddle.com/#!2/e4792/4

+0

@ hims056,...感謝您的快速響應,狀態代表每個job_id的「工作狀態」,「1」代表「已完成」。只有完成所有工作訂單狀態,job_id才能關閉。 – oedin

+0

對,我的查詢會給出與您的結果相同的結果,並且可能會更清晰一些。如果每個job_id的行數很多,find_in_set可能會比min小。 –

+0

確實...比我的更簡單,更易於理解。 – oedin