这两个查询有可能是不同的.我的意思是第一个查询没有包含左表中的所有行,所以我将条件放在连接部分中.
查询1
SELECT COUNT(*) as opens, hours.hour as point
FROM hours
LEFT OUTER JOIN tracking ON hours.hour = HOUR(FROM_UNIXTIME(tracking.open_date))
WHERE tracking.campaign_id = 83
AND tracking.open_date < 1299538799
AND tracking.open_date > 1299452401
GROUP BY hours.hour
Run Code Online (Sandbox Code Playgroud)
查询2
SELECT COUNT(*) as opens, hours.hour as point
FROM hours
LEFT JOIN tracking ON hours.hour = HOUR(FROM_UNIXTIME(tracking.open_date))
AND tracking.campaign_id = 83
AND tracking.open_date < 1299538799
AND tracking.open_date > 1299452401
GROUP BY hours.hour
Run Code Online (Sandbox Code Playgroud)
区别在于第一个查询给出了18行,其中第17到22点之间没有行.但是当我运行第二个查询时,它显示完全24行但是对于17到22之间的行,它的值为1!我希望它是0或NULL?如果真的是1,它应该没有出现在第一个查询中吗?
这是怎么发生的?
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |