簡體   English   中英

如果兩個表中的任何一個滿足條件,則MySQL JOIN

[英]MySQL JOIN if either of the 2 tables meets condition

SELECT COALESCE(table2.value, table3.value) FROM table1
JOIN table2 ON (table1.value = table2.value)
JOIN table3 ON (table1.value = table3.value)

table1.value = table2.valuetable1.value = table3.value是互斥的(最多其中一個是真的)。

僅當table1.value = table2.valuetable1.value = table3.value為true時,如何才能進行連接?

這是唯一的解決方案嗎? (這很乏味)

SELECT table.value FROM table1
JOIN 
(SELECT COALESCE(table2.value, table3.value) FROM table1
 LEFT JOIN table2 ON (table1.value = table2.value)
 LEFT JOIN table3 ON (table1.value = table3.value)
) as table ON (table1.value = table.value)

您可以使用兩個查詢和UNION它們,例如:

SELECT COALESCE(table1.value, table2.value) FROM table1
JOIN table2 ON (table1.value = table2.value)

UNION

SELECT COALESCE(table1.value, table3.value) FROM table1
JOIN table3 ON (table1.value = table3.value)

嘗試使用內連接和聯合兩個表

SELECT * FROM
(SELECT value, data FROM table1) as a
INNER JOIN
(SELECT value, data FROM table2) as b
ON b.value = a.value
UNION ALL
(SELECT value, data FROM table1) as a
INNER JOIN
(SELECT value, data FROM table3) as b
ON b.value = a.value

Inner JOIN將避免連接兩個為NULL的表,它只會加入那些在兩個表上都有完全查找的行。 在UNION中我們假設在第一個JOIN中,另一個table3將不會被包含在那里,所以將它作為單獨的連接和UNION它或將它合並到第一個,這樣你就可以在一個查詢/表上獲得所有數據只要記住使用UNION,所有結果都應該具有您想要獲取的確切名稱或字段。

暫無
暫無

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

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