我有两张桌子。 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
任何提示?
答案 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