我正在尝试比较同一张表中的两个值,并检查是否存在差异。现在,我在 cms_statistics_pages 表中有 1485 条记录,但是当查询如下:
SELECT
cp.identifier,
COUNT(csp1.statID) AS hits,
COUNT(csp2.statID) AS hits_yesterday,
IF(COUNT(csp1.statID)>COUNT(csp2.statID),1,0) AS growth
FROM cms_pages cp
LEFT JOIN cms_statistics_pages csp1
ON csp1.pageID = cp.pageID
AND DATE(csp1.datetime) = '2012-07-20'
LEFT JOIN cms_statistics_pages csp2
ON csp2.pageID = cp.pageID
AND DATE(csp2.datetime) = '2012-07-19'
GROUP BY cp.identifier
..被解雇,我得到这些结果:
identifier hits hits_yesterday growth
index 13395 13395 0
siden-er-under-opdatering 638 638 0
vores-historie 0 3 0
这不符合我的目的。然后,如果我改变:
AND DATE(csp1.datetime) = '2012-07-20'
到不匹配任何记录的日期
AND DATE(csp1.datetime) = '2012-07-21'
我的结果现在看起来像这样:
identifier hits hits_yesterday growth
index 0 141 0
siden-er-under-opdatering 0 29 0
vores-historie 0 3 0
现在点击是正确的,所以我想知道当两个连接都包含一些数据时,查询是否会多次计算记录。
来自 cms_pages 的示例数据:
pageID sectionID templateID 标识符 默认标题 exclude_title 1 1 1 索引 1 欢迎来到 SiteTech 框架 2012
cms_statistics_pages 中的示例数据:
statID frontend backend pageID sectionID panel datetime 1 0 1 34 6 管理员 2012-07-17 12:34:14