我有這個表:自加入
name code value
--------------------------
| john | 0001 | 1 |
| mary | 0001 | 2 |
| mary | 0002 | 3 |
我想實現的是一個結果集,看起來像這樣:
name code value
--------------------------
| john | 0001 | 1 |
| john | 0002 | NULL |
| mary | 0001 | 2 |
| mary | 0002 | 3 |
換句話說,我想要的結果爲john
包含一行code
的0002
,表中缺少該行。
我會想到這樣的事情會得到我更接近:
with x as (select distinct code from t)
select * from t left join x on x.code = t.code
但我得到本質上是相同的表:
name code value value1
-------------------------- --------
| john | 0001 | 1 | 1 |
| mary | 0001 | 2 | 2 |
| mary | 0002 | 3 | 3 |
一些額外的想法給我帶來了這樣的結論:我的解決方案無論如何不可能工作,因爲name
也可能是NULL
,我真的需要它來顯示。
我很難過,這看起來比實際更容易。
任何人都可以點亮一下嗎?
讓它右連接(或交換X和T在第二行:'SELECT * FROM X左接頭(T)上x.code = t.code') – joop
@joop我嘗試過,但沒沒有工作。 –