對于大學作業,我們在 sql 中有兩個表:
表格1:
column_name1 number_P1
PARIS 10
LISBOA 20
RIO 30
表2:
column_name2 number_P2
PARIS 100
NEW YORK 300
我需要通過添加每個城市的總人數來加入這兩個表。所以我試著做:
SELECT table1.column_name1,
number_P2 number_P1 AS TOTAL
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;
但是,如果一個城市 A 出現在表 1 中而沒有出現在表 2 中,這將不起作用。如果一個城市 B 出現在表 2 中而沒有出現在表 1 中,也會發生同樣的情況。我如何概括這些情況?
期望的輸出:
column_name number_P
PARIS 110
LISBOA 20
RIO 30
NEW YORK 300
uj5u.com熱心網友回復:
我們可以嘗試使用UNION ALLwithSUM而不是JOIN
SELECT column_name,
SUM(number_P) number_P
FROM (
SELECT column_name1 as column_name,number_P1 as number_P
FROM table1
UNION ALL
SELECT column_name2,number_P2
FROM table2
) t1
GROUP BY column_name
uj5u.com熱心網友回復:
無需子查詢即可實作此目的的另一種方法。
SELECT IFNULL(table1.column_name1,table2.column_name2) AS ColumnName,
(IFNULL(number_P2,0) IFNULL(number_P1,0)) AS TOTAL
FROM table1
FULL JOIN table2 ON table1.column_name1 = table2.column_name2;
輸出
| 列名 | 全部的 |
|---|---|
| 巴黎 | 110 |
| 里斯本 | 20 |
| 力拓 | 30 |
| 紐約 | 300 |
將“RIO”替換為“RIO DE JANEIRO”
SELECT CASE IFNULL(table1.column_name1,table2.column_name2)
WHEN 'RIO' THEN 'RIO DE JANEIRO'
ELSE IFNULL(table1.column_name1,table2.column_name2) END AS ColumnName,
(IFNULL(number_P2,0) IFNULL(number_P1,0)) AS TOTAL
FROM table1
FULL JOIN table2 ON table1.column_name1 = table2.column_name2;
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491582.html
上一篇:欄位不等于來自不同列的任何值
