根据另一个表中的日期查找重复行

时间:2018-06-05 07:25:40

标签: sql sql-server sql-server-2012

我有两张桌子。 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 个答案:

答案 0 :(得分:1)

编辑: 你的问题看起来很模糊,我可能也不理解。

但无论如何,根据您的预期输出,您的第一个查询是正常的,只需更改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

答案 1 :(得分:0)

以下查询可以帮助您

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

答案 2 :(得分:0)

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

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在这里扮演的角色。

答案 3 :(得分:0)

你可以用它。它将为您提供当年以及当年返回的记录数量。

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