這似乎很簡單:我有兩張選票,我想看看哪些州有不同數量的選票。單獨來看,它很容易: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