Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在视图中使用MySQL UNION和SUM_Mysql - Fatal编程技术网

如何在视图中使用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版本