在MySQL中比较来自同一表和列的两组数据,而不调用表两次
我正在努力使我的查询更有效,因为它仍然很重,而且在将来它会变得最糟糕 我的问题是:在MySQL中比较来自同一表和列的两组数据,而不调用表两次,mysql,sql,Mysql,Sql,我正在努力使我的查询更有效,因为它仍然很重,而且在将来它会变得最糟糕 我的问题是: SELECT SUM(fb_diff.shares) shares FROM ( SELECT (SUM(fb.shares) - SUM(fbs.shares)) shares FROM ( SELECT post_id, shares FROM wp_facebook_total_stats WHERE date = '2014-08-01 00
SELECT SUM(fb_diff.shares) shares
FROM (
SELECT (SUM(fb.shares) - SUM(fbs.shares)) shares
FROM (
SELECT post_id, shares
FROM wp_facebook_total_stats
WHERE date = '2014-08-01 00:00:00'
GROUP BY post_id
) fbs
LEFT JOIN wp_facebook_total_stats fb ON fb.post_id = fbs.post_id
WHERE fb.date = '2014-09-28'
) fb_diff
它是有效的。。。我得到数据。。。但是,有没有一种方法可以在不重复使用同一张桌子的情况下达到同样的效果呢
因为当我解释的时候,我明白了:
2 DERIVED fb ALL post_id NULL NULL NULL 588849 Using where
3 DERIVED wp_facebook_total_stats index post_id post_id 8 NULL 588849 Using where
如果您试图获得基于不同日期或时间间隔的post共享之间的差异,并且不想递归地加入到同一个表中,我可以看到至少两个选项:
希望这会有所帮助,祝你好运。你能展示一下你的表结构、样本数据和你实际要做的事情的解释吗?在你的索引中包括
fd.date