[英]MySQL self join return all rows
對於下面的示例數據,我需要一個查詢,該查詢返回每一行,如果'contingent_on'字段為NULL,則將其返回為NULL,但如果不是NULL,則將返回與'primary_key'相對應的'ticket_name'。的價值。
我嘗試了自我聯接查詢,但只能讓它們返回非NULL行。
表格數據示例:
primary_key | ticket_name | contingent_on
1 | site preparation | NULL
2 | tender process | NULL
3 | construction | 1
應該返回所有行,在“ construction”行返回的地方,在“ contingent_on”字段中輸入“ site prepare”代替“ 1”。
您需要一個自我離開的加入:
select
t.primary_key,
t.ticket_name,
tt.ticket_name ticket_name2
from tablename t left join tablename tt
on tt.primary_key = t.contingent_on
order by t.primary_key
參見演示 。
結果:
| primary_key | ticket_name | ticket_name2 |
| ----------- | ---------------- | ---------------- |
| 1 | site preparation | null |
| 2 | tender process | null |
| 3 | construction | site preparation |
看起來很簡單的查詢:
select
primary_key,
ticket_name,
case when contingent_on is not null then ticket_name else contingent_on end as contingent_on
from <<your_table>>
order by primary_key
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.