我有兩個表(t1和t2)。 我想列印/保留t1的所有記錄(我們將t1視為左表)。我想對t1和t2的兩列進行JOIN,但是有一個問題。 表t1由列c1和c2組成。 表t2由列c3、c4和c5組成。 我想在t1和t2之間對c1(來自t1)和c3(來自t2)進行JOIN,但我也想在t1和t2之間對c2(來自t1)和c4(來自t2)進行JOIN 如果c1和c3的記錄不匹配。
這里是兩個表。 完全是虛構的,但適用于 我的真實的、與作業有關的問題
下面的表格就是我想要的。 所有來自t1的記錄/行都被列印出來。
我非常感謝任何提供查詢解決方案的人。 既然如此,是否有辦法在不使用UNION的情況下解決這個問題?另外,我使用的是SQL Server。
uj5u.com熱心網友回復:
看著輸入和輸出的資料,我認為你的意思是如果c1和c3不同,就比較c2和c4,而不是c1和c2。我在 sql 中重新創建了這些表,下面這段代碼給出了你要的結果。
在這種情況下,你可以直接加入并使用一個OR:
SELECT<
*
from
t1
LEFT JOIN t2 ON= t2.c3
OR t1.c2 = t2.c4。
uj5u.com熱心網友回復:
你確定你是指c1和c2嗎?它們是同一表中的列。看一下模式,似乎c1是一個PK,而c2是一個VARCHAR。但是試試這個?你可能需要將Int轉換為VARCHAR,反之亦然,這取決于你的DBMS
select * from t1 JOIN t2 ON t1。 c1 = t2.c3 OR (t1.c2 = t2. c4 AND t1.c1 <> t1.c2)。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/311037.html
標籤:
