首页 > 解决方案 > Oracle 选择存在 2 的相同 id

问题描述

所以这个 Oracle 表的这个查询显示了 2 行具有相同的 id

SELECT INDIVIDUAL_ID,DATE1,DATE2
FROM RESIDENCE_PERIOD
WHERE INDIVIDUAL_ID = 401865003800;

都好 -

401865003800    20-05-02    20-05-20
401865003800    20-06-01    20-06-30

但是还有其他 id 也有超过 1 个条目,所以这个查询:

  SELECT * 
  FROM RESIDENCE_PERIOD rp 
  WHERE  rp.INDIVIDUAL_ID IN
                    (SELECT rp2.INDIVIDUAL_ID
                     FROM RESIDENCE_PERIOD rp2
                    GROUP BY rp2.INDIVIDUAL_ID
                    HAVING COUNT(rp2.INDIVIDUAL_ID) > 1)
    AND ROWNUM <=2
  ORDER BY rp.INDIVIDUAL_ID;

有效,但带回 2 个不同的 id,它们都有超过 1 个条目

276460366513
401865003800

我不在乎我得到哪个 id。我只希望两个 id 相同。

标签: sqloracle

解决方案


您最好使用这样的分析函数来获取具有多个记录的所有相同 ID 的整行:

  Select p.* from
     (Select p.*,
             Count(1) over (partition by P.INDIVIDUAL_ID ) as cnt
        From RESIDENCE_PERIOD p) p
       Where cnt>1
 Order by INDIVIDUAL_ID

推荐阅读