在给定另一列的情况下,为列选择具有不同值的行

时间:2016-10-18 13:51:50

标签: sql

给定一个包含2列a,b。

的表

我想选择给定a的行,我可以有不同的b值。

在这个例子中,我想要前两行

a | b
-----
1 | 1  
1 | 2 
2 | 1
2 | 1
3 | 1

2 个答案:

答案 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窗口功能。