【发布时间】:2020-03-23 04:52:15
【问题描述】:
我的表(bar、baz)有 1 行或多行与另一个表(foo)相关。当我将 bar 和 baz 都加入 foo 时,我会得到每个表的每一行的结果。
http://sqlfiddle.com/#!9/1c13f2/1/0
CREATE TABLE foo (`id` int, `value` varchar(5));
INSERT INTO foo (`id`, `value`) VALUES
(1, 'two'),
(2, 'two'),
(3, 'one');
CREATE TABLE bar (`id` int, `foo_id` int, `value` int);
INSERT INTO bar (`id`, `foo_id`, `value`) VALUES
(1, 1, 1),
(2, 1, 1),
(3, 2, 1),
(4, 2, 1),
(5, 3, 1);
CREATE TABLE baz (`id` int, `foo_id` int, `value` int);
INSERT INTO baz (`id`, `foo_id`, `value`) VALUES
(1, 1, 1),
(2, 1, 1),
(3, 2, 1),
(4, 2, 1),
(5, 3, 1);
查询:
SELECT foo.value, SUM(bar.value), SUM(baz.value)
FROM foo
JOIN bar ON bar.foo_id = foo.id
JOIN baz ON baz.foo_id = foo.id
GROUP BY foo.id
结果:
value SUM(bar.value) SUM(baz.value)
two 4 4
two 4 4
one 1 1
预期结果:
value SUM(bar.value) SUM(baz.value)
two 2 2
two 2 2
one 1 1
【问题讨论】: