2017-03-09 14 views
0

我有一张表,我想知道重复记录存在于同一列的位置。这些都是我的专栏,我想记录下GROUP_ID或一周是相同的代码和fweek和newcode不同同一列中的PGSQL重复记录

Id newcode fweek code group_id week 
1 343001 2016-01 343  100  8 
2 343002 2016-01 343  100  8 
3 343001 2016-01 343  101  08 

需要的记录

Id newcode fweek code group_id week 
3 343001 2016-01 343 101  08 
+0

1)详细信息,如果{GROUP_ID,周}是一样的,是不是也可以重复? 2)是否是唯一的ID? – joop

+0

是的id是唯一的 –

回答

0

要查找重复值我都加入了表本身。 ,我们需要将结果与代码,fweek和newcode分组,以获得多个重复行(如果存在)。我用max()来获取最后插入的行。

你不需要使用的是不同的(对于不等式+ NULL是相同的)。如果您不想比较NULL,请使用<>运算符。

您在此处找到有关info

select r.* 
from your_table r 
where r.id in (select max(r.id) 
      from your_table r 
       join your_table r2 on r2.code = r.code and r2.fweek = r.fweek and r2.newcode = r.newcode 
      where 
      r2.group_id is distinct from r.group_id or 
      r2.week is distinct from r.week 
      group by r.code, 
        r.fweek, 
        r.newcode 
      having count(*) > 1)