我有这个场景
|---COL A ------------------COL B----|
|----001 ----------------------X-----|
|----001 ----------------------X-----|
|----002 ----------------------Y-----|
|----002 ----------------------Y-----|
|----003 ----------------------X-----|
|----003 ----------------------Y-----|
|----004 ----------------------X-----|
|----004 ----------------------Z-----|
我想在colB
中获取具有不同值的记录。因此,我期望得到列b的值不同的id的结果。
003
004
意味着003具有x和Y,并且004具有x和Z
我试过了:
select colA,count(*) from table group by colA,colB having count(*) >2;
看起来不对,因为它将具有相同A和B的那些分组
所以我删除了分组依据的col,但随后它获得了所有具有相同A的人,并忽略了B是否相等。我不知道它的正确语法。
答案 0 :(得分:0)
SELECT colA
FROM (
SELECT colA, COUNT(DISTINCT colB) countB
FROM tableGroup
GROUP BY colA
)
WHERE countB > 1
答案 1 :(得分:0)
试试这个:
select colA
from t
group by colA
having count(distinct colB) >= 2
关键是count(distinct)
。
稍微更有效的形式是:
having min(colB) <> max(colB)
但是,这并不能概括为超过2个值。