簡體   English   中英

加入3個表,其中第3個表與表2無關

[英]Join 3 Tables with 3rd Table not associated to Table 2

我正在努力做到以下幾點: -

SELECT t1.a, t1.b, t2.a, t2.b, t3.a, t3.b, t3.c 
FROM t1 LEFT JOIN t2 ON t1.b = t2.b 
LEFT JOIN t3 ON t2.b <> t3.b 
WHERE t3.c = 'someuser'

結果: - 我在t3中獲得了t2行

預期結果: - 在t3中獲取與t2無關的行

請幫忙。 謝謝

請記住,具有不匹配記錄的左連接將導致t3中的空數據。 我改變了最后兩行。 嘗試這個:

SELECT t1.a, t1.b, t2.a, t2.b, t3.a, t3.b, t3.c 
FROM t1 LEFT JOIN t2 ON t1.b = t2.b 
LEFT JOIN t3 ON t2.b = t3.b 
WHERE t3.c = 'someuser' and t3.b is null

雖然,如果你正在對t3進行條件檢查,它總是假的(當不檢查null時)......

也許你想要這個?

SELECT t1.a, t1.b, t2.a, t2.b, t3.a, t3.b, t3.c 
FROM t1 LEFT JOIN t2 ON t1.b = t2.b 
LEFT JOIN t3 ON t2.b = t3.b and t3.c = 'someuser'
WHERE t3.b is null

兩個查詢之間的區別是:第一個應該總是返回0行,因為你期望t3.b為null(可能表示連接表沒有匹配的記錄),但是你檢查t3.c是否有值這將永遠不會存在於結果中。 第二個查詢在連接期間在t3.c上進行過濾,然后在WHERE子句中找到空匹配,這應該有希望表明沒有匹配(取決於數據的設置方式)。

解:

SELECT t1.a, t1.b, t2.a, t2.b, t3.a, t3.b, t3.c 
FROM t1 LEFT JOIN t2 ON t1.b = t2.b 
LEFT JOIN t3 ON t2.b = t3.b and t3.c = 'someuser'
WHERE t3.b is null GROUP BY t3.c

暫無
暫無

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

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