2013-08-21 68 views
0

下面是數據的採樣我一起工作:獲取行的分組從結果集

id group  class  phase priority 
---------------------------------------------- 
222 pc  aaaaaamarket  modify 1 
222 pc  aaaaaamarket  modify 1 
222 pc  aaaa2amarket  modify 1 
222 pc  aaaaaamarket  modify 1 
222 pc  aaaaaamarket  modify 1 
222 pc  AAAAAbudgetlever modify 4 
222 pc  aaaabudgetlever modify 7 
222 pc  aaaabudgetlever modify 7 
222 pc  aaaabudgetlever modify 7 
222 pc  aaamatchtype  modify 13 
222 pc  aa5matchtype  modify 13 

我希望做的是能夠告訴我們,如果具有相同優先級的任何行, ID,組和階段,但有不同的類。不過,我想分別研究不同的優先事項組別。

所以我會非常得到這樣的輸出:

id group  class  phase priority 
---------------------------------------------- 
222 pc  aaaa2amarket  modify 1 
222 pc  aa5matchtype  modify 13 

,因爲這兩行有不同的類別,但一切是一樣的。

有關如何完成此任務的任何想法?

回答

1

這將讓你犯罪嫌疑人的行列表:

select id, group, phase, priority 
from t 
group by id, group, phase, priority 
having min(class) <> max(class); 

我不知道你怎麼確定你已經在兩個特定行突出顯示。當組中存在其他行時,它似乎是單行不同的行。

當有其他人使用四個匹配列時,這將給你一個單身類的類的列表。如果一個組有多個這樣的單身人士,則類名變成逗號分隔列表:

select id, group, phase, priority, group_concat(class) as classes 
from (select id, group, class, phase, priority, count(*) as cnt 
     from t 
     group by id, group, class, phase, priority 
    ) t 
where cnt = 1 
group by id, group, phase, priority 
having min(class) <> max(class);