这似乎很简单:我有两张选票,我想看看哪些州有不同数量的选票。单独来看,它很容易:SQL:检测两个表之间的总和差异?
select state, sum(votes) from votes_a group by state;
select state, sum(votes) from votes_b group by state;
如何查询像state, votes_a, votes_b
对于具有不同的结果状态?
这似乎很简单:我有两张选票,我想看看哪些州有不同数量的选票。单独来看,它很容易:SQL:检测两个表之间的总和差异?
select state, sum(votes) from votes_a group by state;
select state, sum(votes) from votes_b group by state;
如何查询像state, votes_a, votes_b
对于具有不同的结果状态?
尝试加入:
SELECT
totals_a.state,
totals_a.total_votes,
totals_b.total_votes
FROM
(
SELECT state, SUM(votes) AS total_votes
FROM votes_a
GROUP BY state
) AS totals_a
JOIN
(
SELECT state, SUM(votes) AS total_votes
FROM votes_b
GROUP BY state
) AS totals_b
ON totals_a.state = totals_b.state
WHERE totals_a.total_votes <> totals_b.total_votes
注意,这将错过其接受零票表的一个状态。要解决这个问题,你可以使用FULL OUTER JOIN(假设你的数据库支持这个功能)并检查NULL。
这将给出如 状态,votes_a 状态,votes_b 不是请求的 状态,votes_a,votes_b – Karl 2011-02-23 21:59:57
@Karl:现在修复,谢谢! :) – 2011-02-23 22:06:57
尝试......
select state, sum(votes_a), sum(votes_b)
from (select state, sum(votes) votes_a, 0 votes_b
from votes_a
group by state) tbl_a
(select state, 0 votes_a, sum(votes) votes_b
from votes_b
group by state) tbl_b
where tbl_a.state = tbl_b.state
group by state
您正在使用什么数据库
? – 2011-02-23 20:53:32