MySQL在Left outer Join上获取重复行

时间:2012-12-19 19:46:43

标签: mysql

我正在尝试计算每天的事件数,包括我的数据库没有数据的日子,我创建了一个日历表,并尝试了我找到的所有建议,但由于某种原因,我不断加倍每天的事件。下面是我一直在玩的查询。

 SELECT DAY(c.datefield) as date, COUNT(s.timestamp) as count
FROM calendar c 
LEFT OUTER JOIN Seizures s ON (DATE(s.timestamp) = c.datefield)
WHERE c.datefield LIKE '2012-11-%'
GROUP BY c.datefield

如果有人可以帮助我防止我在桌子上撞一下,我会非常感激。

注:

如果我执行直接计数查询而不尝试使用JOIN来填充没有数据的日期,我会得到正确的条目数。只有在尝试加入时,计数才会因为某种原因而翻倍。

2 个答案:

答案 0 :(得分:0)

事实证明,我的日历表中所有条目都重复了,这是导致计数加倍的原因,@ PinnyM引导我找出这个解决方案。

Thanx寻求帮助。

答案 1 :(得分:0)

根据这些结果,您的calendar表似乎包含重复的行。您可以通过运行来检查:

SELECT datefield, COUNT(*) FROM calendar
WHERE datefield LIKE '2012-11-%'
GROUP BY datefield
HAVING COUNT(*) > 1

如果返回任何行,那么在查询按预期工作之前,您需要解决重复项。