[英]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.