根据下面的示例数据,我需要一个返回每一行的查询,如果'contingent_on'字段是NULL,则返回为NULL,但如果不是NULL,则返回与'primary_key'相对应的'XBAA' '价值。
我尝试过自联接查询,但只能让它们返回非NULL行。
示例表数据:
primary_key | ticket_name | contingent_on
1 | site preparation | NULL
2 | tender process | NULL
3 | construction | 1
应返回所有行,其中“构造”行返回,“站点准备”输入代替“contingent_on”字段中的“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
参见demo 结果:
| primary_key | ticket_name | ticket_name2 |
| ----------- | ---------------- | ---------------- |
| 1 | site preparation | null |
| 2 | tender process | null |
| 3 | construction | site preparation |