除了日期列之外,我還有兩個幾乎相同的 MySQL 表,我想將它們與選擇查詢合并以創建一個顯示兩個日期的最終表。
如果一個表中有唯一acc_id值 -> 我想將另一個表中的金額默認為0.
這是我的意思的一個例子:
Table1:
| ID | acc_id | 姓名 | 八月金額 |
|---|---|---|---|
| 1 | 123 | 名稱1 | 100 |
| 2 | 456 | 名稱2 | 200 |
| 3 | 333 | 名稱3 | 300 |
Table2:
| ID | acc_id | 姓名 | sep_amount |
|---|---|---|---|
| 1 | 123 | 名稱1 | 200 |
| 2 | 456 | 名稱2 | 300 |
| 3 | 444 | 名稱4 | 400 |
Merged table:
| acc_id | 姓名 | 八月金額 | sep_amount |
|---|---|---|---|
| 123 | 名稱1 | 100 | 200 |
| 456 | 名稱2 | 200 | 300 |
| 333 | 名稱3 | 300 | 0 |
| 444 | 名稱4 | 0 | 400 |
有沒有辦法通過一個單一的 SQL 查詢來實作這一點?我已經玩了一段時間,但我似乎無法破解它。
幫助表示贊賞!謝謝閱讀。
uj5u.com熱心網友回復:
忽略 PK 列,這是一種解決方案,我們將兩個表合并,然后從中進行選擇:
select acc_id, name, sum(aug_amount) as aug_amount, sum(sep_amount) as sep_amount
from (
select acc_id, name, aug_amount, 0 as sep_amount
from table1
union
select acc_id, name, 0, sep_amount
from table2
)z
group by acc_id, name
order by name;
| acc_id | 姓名 | 八月金額 | sep_amount |
|---|---|---|---|
| 123 | 名稱1 | 100 | 200 |
| 456 | 名稱2 | 200 | 300 |
| 333 | 名稱3 | 300 | 0 |
| 444 | 名稱4 | 0 | 400 |
在 DB Fiddle 上查看
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/515065.html
