-1
给定一个包含2列a,b的表。选择列中具有不同值的行,给定另一列
我想选择对于给定的a行,我可以有不同的b值。
在这个例子中,我想第2行
a | b
-----
1 | 1
1 | 2
2 | 1
2 | 1
3 | 1
给定一个包含2列a,b的表。选择列中具有不同值的行,给定另一列
我想选择对于给定的a行,我可以有不同的b值。
在这个例子中,我想第2行
a | b
-----
1 | 1
1 | 2
2 | 1
2 | 1
3 | 1
试试这个:
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
你没有提到你的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
。
您正在使用哪些DBMS? –