[英]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 join
和coalesce()
:
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.