如何在视图中使用MySQL UNION和SUM
我有两张桌子 表一:如何在视图中使用MySQL UNION和SUM,mysql,Mysql,我有两张桌子 表一: id amount 1 2 1 1 2 1 表二: id amount 1 2 我希望生成具有如下输出的视图: id amount 1 2 1 3 2 1 视图: id amount 1 5 2 1 我试着用这样的简单代码 CREATE VIEW v_test AS SELECT id, sum(amount) FROM table1 UNION ALL SELECT id, sum(amount
id amount
1 2
1 1
2 1
表二:
id amount
1 2
我希望生成具有如下输出的视图:
id amount
1 2
1 3
2 1
视图:
id amount
1 5
2 1
我试着用这样的简单代码
CREATE VIEW v_test AS
SELECT id, sum(amount)
FROM table1
UNION ALL
SELECT id, sum(amount)
FROM table2
GROUP BY id
但当我在输出上面运行SQL时,如下所示:
id amount
1 2
1 3
2 1
有我想要的输出代码吗?
谢谢您也可以像下面那样使用join来使用它
CREATE VIEW v_test AS
SELECT table1.id as id,(sum(table1.amount)+sum(table2.amount)) as amount FROM table1
join table2 on table1.id=table2.id
GROUP BY table1.id
查看您的数据示例,并确认某些mysql版本不允许在视图中使用subselect,您可以创建一个实用程序视图
create view v_test_union
as
select id, amount
from table1
union all
select id, amount
from table2
然后创建您的视图
create view
as
select id, sum(amount)
from v_test_union
如果使用mysql 5.7或更高版本,则可以在create view语句中使用subquery:
create view
as
select id, sum(amount)
from
(select id, amount
from table1
union all
select id, amount
from table2) t
group by id
输出
你试过我的答案吗?是的,但输出与我的答案的结果相同?是的,输出id=1和金额=7仍然不起作用,我得到了错误1349-视图的SELECT在FROM中包含一个子查询clause@MuhammadRifqiMaulaturRahman答案已更新。。使用建议表单避免SUQUERY如果子查询出错,那么可能是打字错误,或者可能是其他版本?因为我的答案使用子查询没有问题。在mysql 5.6中,子查询是不允许的。。我不知道,如果在mysql 5.7中取消了此限制,您应该在数据库服务器面板的phpadmin的stratup中检查mysql版本而不是phpmyadmin是的,输出id=1,数量=7error 1349-视图的SELECT在FROM子句中包含一个子查询您使用的是什么mysql?因为在线演示中使用的是ok5.5.27 mysql版本