2017-01-23 26 views
2

我有2個表如何使用MySQL UNION和SUM的意見

表中的一個:

id amount 
1 2 
1 1 
2 1 

表二:

id amount 
1 2 

我想使視圖,像這樣的輸出:

查看:

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 

的,我想輸出的任何代碼? 感謝

+0

你嘗試過我的答案? –

+0

是的,但輸出相同我想要什麼 –

+0

我的答案是什麼結果? –

回答

3

尋找到你的數據樣本,做的是,有些MySQL版本不允許再選擇鑑於你可以創建一個功利觀

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語句中使用子查詢:

create view 
as 
    select id, sum(amount) 
    from 
     (select id, amount 
     from table1 
     union all 
     select id, amount 
     from table2) t 
    group by id 
+0

仍然無法正常工作,我得到錯誤#1349 - 視圖的SELECT包含FROM子句中的子查詢 –

+0

@MuhammadRifqiMaulaturRahman答案更新..與建議表格避免suquery – scaisEdge

+0

謝謝它的作品! –

1

,你也可以使用這個通過加入像下面

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 
+0

這不工作,可以有重複的數據。 –

+0

是ouput id = 1和金額= 7 –

0

SQL DEMO

CREATE VIEW v_test AS 
SELECT id, SUM(amount) 
FROM (
     SELECT id, amount 
     FROM table1 
     UNION ALL 
     SELECT id, amount 
     FROM table2 
    ) t 
GROUP BY id  
; 

輸出

enter image description here

+0

錯誤#1349 - 視圖的SELECT包含FROM子句中的子查詢 –

+1

您使用的是什麼mySql?因爲在線演示作品ok –

+0

5.5.27 mysql版本 –