根据下面的示例数据,我需要一个返回每一行的查询,如果'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 |