假设我们有两个表taba和tabb
CREATE TABLE `taba` (
`id` INT NOT NULL,
`value` FLOAT NULL,
PRIMARY KEY (`id`));
和
CREATE TABLE `tabb` (
`id` INT NOT NULL,
`value` FLOAT NULL,
PRIMARY KEY (`id`));
我想使用适用于任何星座的查询来构建相同ID的总和。这通常是指MySql中缺少的FULL OUTER JOIN问题,需要使用UNION解决方法来解决
CREATE OR REPLACE VIEW `sum` AS
SELECT a.id, a.`value` + COALESCE(b.`value`,0) AS `mysum`
FROM taba a
LEFT JOIN tabb b ON a.id=b.id
UNION
SELECT b.id, COALESCE(a.`value`,0) + b.`value` AS `mysum`
FROM tabb b
LEFT JOIN taba a ON a.id=b.id
让我们以简短的形式注意到这一点
taba + tabb
是否有一个通常有两个以上加数的烹饪容器,即
taba + tabb + tabc
还是我必须以“虚拟括号”的方式解决它?
(taba + tabb) + tabc
或者是否有更好的方法可以获得无数的加数?
编辑:一个想法可能是跳过UNION构造并使用'something'(子查询?),它提供所有ID的联合集,0作为第一个summand的值AS。在这种情况下,COALESCE和LEFT JOIN就足够了。
子查询不能处理MySql中的视图,但这可以解决。
答案 0 :(得分:2)
为什么不
select id,sum(value)
from (
select id, value from taba
union all
select id, value from tabb) t
group by id
如果您有多个表可以选择相同的格式,只需将它们放在子句中并使用union all
将它们组合在一起。