簡體   English   中英

MySQL自連接返回所有行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM