代码之家  ›  专栏  ›  技术社区  ›  Mohammad Yusuf

根据另一个表中的日期查找重复行[已关闭]

  •  0
  • Mohammad Yusuf  · 技术社区  · 7 年前

    我有两张桌子。T1和T2。

    表T1:

    dno     jno
    1       a
    1       b
    1       c
    

    表T2:

    jno     date
    a       2017
    b       2017
    c       2016
    

    我想根据t2中的日期在t1中得到重复的行。如果我这样做:

    select T1.dno, count(T1.dno) count from T1 left join T2 on T1.jno = T2.jno
    group by T1.dno
    having date=2017
    

    T1.dno 组合在一起,我找不到重复的。

    预期产量:

    dno count
    1   2
    

    有小费吗?

    4 回复  |  直到 7 年前
        1
  •  1
  •   B3S    7 年前

    编辑: 你的问题看起来很含糊,我可能不明白。

    但是无论如何,根据您的预期输出,您的第一个查询是可以的,只需更改 HAVING 从句并使其成为 WHERE 条款

    select T1.dno, count(T1.dno) count
    from T1
    left join T2 on T1.jno = T2.jno
    WHERE T2.DATE = 2017
    group by T1.dno
    
        2
  •  0
  •   Sudipta Mondal    7 年前

    下面的查询应该可以帮助您

    select rno, count(date) cnt
    from t2
    where t2.rno in (select T1.rno from T1)
    group by rno
    having count(date) > 1 -- this will get you the duplicate records
    
        3
  •  0
  •   Tim Biegeleisen    7 年前

    您的预期输出可以通过以下查询获得:

    SELECT t1.dno, COUNT(DISTINCT t2.date) AS count
    FROM T1 t1
    LEFT JOIN T2 t2
        ON t1.jno = t2.jno
    GROUP BY t1.dno;
    

    但不清楚是什么角色 T1 在这里玩耍。

        4
  •  0
  •   Karan Eyunni    7 年前

    你可以用这个。它会告诉你那一年以及那一年有多少记录被退回。

    select t1.dno,t2.date,count(t2.date) 
    from t1 inner join t2 on t2.jno = t1.jno
    group by t1.dno,t2.date
    having count(t2.date) >1