繁体   English   中英

返回多次出现的不同结果

[英]Return distinct results that appear more than once

我有以下数据:

    ID  Site
    2   NULL
    2   32
    3   6
    4   7
    8   12
    8   13
    9   14
    9   14

结果应该是:

    ID  Site
    2   NULL
    2   32
    8   12
    8   13

请注意,结果会找到 ID 和站点的唯一组合,这些组合对于给定 ID 重复多次。

我做了以下查询,但没有返回结果:

 select  distinct id, site
 from Table1  
 group by id, site
 having count(*) > 1
 order by id
SELECT
   ID,
   site
FROM table1
WHERE ID IN (
   SELECT ID
   FROM (
      SELECT ID ,site
      FROM table1 
      GROUP BY ID ,site
   ) x
   GROUP BY ID
   HAVING count(*)>1
)

请参阅: DBFIDDLE

  • SELECT ID, site FROM table1 GROUP BY ID, site将选择不同的值。
  • 然后,使用HAVING count(*) > 1 ,仅过滤出现多次的 ID。

PS 你应该尽量避免在一个查询中使用DISTINCTGROUP BY 当你这样做时,它会让生活变得更加复杂......😉

一种方法是在 CTE 中执行select distinct ,然后使用count窗口函数来获得所需的结果:

with u as (
    select distinct *
    from Table1
), v as (
    select *
        , count(*) over(partition by ID) as cnt
    from u
)
select ID, Site
from v
where cnt > 1;

小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM