给定一个包含2列a,b。
的表我想选择给定a的行,我可以有不同的b值。
在这个例子中,我想要前两行
a | b
-----
1 | 1
1 | 2
2 | 1
2 | 1
3 | 1
答案 0 :(得分:2)
试试这个:
SELECT t1.*
FROM mytable AS t1
JOIN (
SELECT a
FROM mytable
GROUP BY a
HAVING COUNT(DISTINCT b) > 1
) AS t2 ON t1.a = t2.a
答案 1 :(得分:0)
您没有提到您的DBMS,但在Oracle中您可以这样做:
select a,b
from (
select a,b,
count(distinct b) over (partition by a) as num_b
from the_table
) t
where num_b > 1
不幸的是,Postgres或SQL Server不支持distinct
窗口功能。