以下是我正在使用的数据的示例:
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
因为这两行有不同的类,但其他一切都是相同的。
关于如何实现这一目标的任何想法?
答案 0 :(得分:1)
您可以使用MySQL's GROUP BY,所以:
SELECT * FROM table
GROUP BY class
答案 1 :(得分: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);