我有桌子T1和T2. 兩者都有列ID和。此外,還有另一列和另一列。是主鍵。計算自(所以如果匹配,也匹配)。列存在于兩個表中,但相對于. 并且彼此沒有任何關系。XYT1ZT2AIDXIDIDXYIDAZ
T1:
| ID | X | 是 | Z |
|---|---|---|---|
| 1 | X1 | Y1 | Z1 |
| 2 | X2 | Y2 | Z2 |
T2:
| ID | X | 是 | 一個 |
|---|---|---|---|
| 2 | X2 | Y3 | A1 |
| 3 | X3 | Y4 | A2 |
我想要一個查詢,它回傳一條包含兩個表中所有資料的記錄,并在NULL欄位沒有資料時填寫。
結果:
| ID | X | T1Y | T2Y | Z | 一個 |
|---|---|---|---|---|---|
| 1 | X1 | Y1 | 無效的 | Z1 | 無效的 |
| 2 | X2 | Y2 | Y3 | Z2 | A1 |
| 3 | X3 | 無效的 | Y4 | 無效的 | A2 |
我的 SQLite 版本不支持RIGHT JOIN或FULL JOIN. 我試過了 :
SELECT T1.ID, T2.ID
FROM T1
LEFT JOIN T2
ON T1.ID = T2.ID
UNION
SELECT T1.ID, T2.ID
FROM T2
LEFT JOIN T1
ON T1.ID = T2.ID
WHERE T1.ID IS NULL
ORDER BY T1.ID
但得到:
| ID | ID |
|---|---|
| 1 | 無效的 |
| 2 | 2 |
| 無效的 | 3 |
uj5u.com熱心網友回復:
自版本3.39.0 SQLite 支持FULL OUTER JOIN:
SELECT COALESCE(T1.ID, T2.ID) ID,
COALESCE(T1.X, T2.X) X,
T1.Y T1Y,
T2.Y T2Y,
T1.Z,
T2.A
FROM T1 FULL OUTER JOIN T2
ON T2.ID = T1.ID;
請參閱演示。
uj5u.com熱心網友回復:
我們可以這樣表述full joinwith union all:
select t1.id, t1.x, t1.y t1y, t2.y t2y, t1.z, t2.a
from t1
left join t2 on t1.id = t2.id
union all
select t2.id, t2.x, t1.y, t2.y, t1.z, t2.a
from t2
left join t1 on t1.id = t2.id
where t1.id is null
DB Fiddle 上的演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/533338.html
