如何 select 两个不同的值和 return 所有列?

How to select distinct values for two and return all columns?

我想 select 两列中的不同值。

示例数据:

ID TITLE SOURCE TARGET
1  asd   12      2
2  asd1  123     125
3  asd1  123     56  
4  asd2  123     125
5  asd3  164     146

我想获取源和目标列 ID - 2 和 ID - 4 重复的不同数据。

ID TITLE SOURCE TARGET
1  asd   12      2
2  asd1  123     125
3  asd1  123     56  
5  asd3  164     146

如果您只想要不同的值,请使用 select distinct:

select distinct source, target
from example t;

如果您想要 source/target 只出现在一行的行,那么一种方法使用 window 函数:

select t.*
from (select t.*,
             count(*) over (partition by source, target) as cnt
      from example t
     ) t
where cnt = 1;