2016-11-23 38 views
0

的aggregate_function我有這個表MySQL的:GROUP BY和與條件

id | idDevice | type | color 
    ----------------------------- 
    1 | 1  | a | red 
    2 | 1  | b | green 
    3 | 1  | c | red 
    4 | 2  | a | blue 
    5 | 2  | b | red 

每個idDevice有紅色color至少一個type

我想獲得每個idDevice一個typecolor紅色與GROUP(那不是唯一的)BY語句是這樣的:

SELECT idDevice, 
    CASE WHEN color = red THEN type END as redType 
FROM table 
GROUP BY idDevice 

不幸的是,上述方法無效,因爲它有時會返回一個即使存在紅色的類型,也是NULL redType。是否有可能通過GROUP BY語句獲得正確的redType?

我要尋找這樣的:

idDevice | redType 
    ----------------------------- 
    1  | a  
    2  | b  

或這個結果:

idDevice | redType 
    ----------------------------- 
    1  | c  
    2  | b  
+0

爲什麼使用MAX()函數 – Strawberry

回答

0

你不需要CASE對於這一點,只是WHERE

SELECT idDevice, MAX(type) AS redType 
FROM table 
WHERE color = 'red' 
GROUP BY idDevice 
+0

。 – Man

+0

您需要使用一些選擇選擇哪種類型的組中,我不明白「或」在這種情況下 – Barmar