簡體   English   中英

在一個查詢中兩次連接同一張表

[英]Joining the same table twice in one query

我有3個表要加入。 我們稱它們為A,B,C。我希望這兩個查詢具有相同的結果,但只有一個:

SELECT * FROM A JOIN B ON B.ext_id = A._id
SELECT * FROM A JOIN C ON C.ext_id = A._id

同樣,B.ext_id和C.ext_id不能具有相同的值,這意味着B.ext_id和C.ext_id中不能具有相同的A._id值

顯然,此查詢:

SELECT * FROM A JOIN B ON B.ext_id = A._id JOIN C ON C.ext_id = A._id

返回null。 我該怎么辦? 謝謝

一個典型的方法使用left joincoalesce()

select a.*,
       coalesce(b.col1, c.col1) as col1
from a left join
     b
     on b.ext_id = a._id left join
     c
     on c.ext_id = a._id;

對兩個表中所需的所有列都使用coalesce()

該查詢將為您提供所需的內容,並且不會顯示任何不匹配項,類似於您正在執行的兩個內部聯接查詢。 這也應該適用於其他表。

SELECT a.*, COALESCE(b.ext_id, c.ext_id) AS ext_id
FROM A
    LEFT JOIN B ON A._id = B.ext_id
    LEFT JOIN C ON A._id = C.ext_id
WHERE COALESCE(b.ext_id, c.ext_id) IS NOT NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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