0

我有这种情况

|---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 的人分组

所以我删除了 group by 上的 col b ,但它会得到所有具有相同 A 的人,而不管 B 是否相等。我不知道它的正确语法。

4

2 回答 2

0
SELECT colA 
FROM (
    SELECT colA, COUNT(DISTINCT colB) countB
    FROM tableGroup 
    GROUP BY colA
)
WHERE countB > 1
于 2013-02-22T00:08:51.777 回答
0

尝试这个:

select colA
from t
group by colA
having count(distinct colB) >= 2

关键是count(distinct).

一种更有效的形式是:

having min(colB) <> max(colB)

但是,这并不能推广到超过 2 个值。

于 2013-02-22T00:10:46.703 回答