表1
table1_id
employee_id
地址
...
表2
table2_id
employee_id
地址
...
查詢:
SELECT *
FROM Table 1 AS A
INNER JOIN TABLE 2 AS B A. employee_id = B.employee_id
在有些情況下,由于輸入錯誤,表A和表B不能在employee_id上連接,在這種情況下,我可以想在地址上連接。我不確定如何包含這個邏輯。我在想一個case陳述句,如果employee_id不匹配,就可以根據這個陳述句進行連接,但是,查詢會嘗試與表中的其他每條記錄匹配。我不確定我的思路是否正確。
uj5u.com熱心網友回復:
不確定我的理解是否正確,但你是想這樣嗎?
SELECT * FROM Table 1 AS A
INNER JOIN TABLE 2 AS B
WHERE (A.employee_id = B.employee_id) OR ((A. employee_id ! = B.employee_id) AND (A.employee_addr = B.employee_addr)
這將是在employee_id相同的情況下的匹配,或者如果employee_id不匹配,則在雇員地址上匹配。
uj5u.com熱心網友回復:
我建議兩個左鍵連接s:
SELECT a. *, COALESCE(b_e.col1, b_a.col1) as col1, . . .
FROM Table1 a left JOIN
表2 b_e
ON A.employee_id = b_e.employee_id LEFT join
表2 b_a
ON A.adress = b_a.address AND b_e.employee_id IS NULL >。
WHERE b_e.employee_id IS NOT NULL or b_a. 地址 IS NOT NULL。
WHERE子句通過要求與連接條件的一個匹配,將外連接變回了 "內 "連接。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/306826.html
標籤:
上一篇:如何在PostgreSQL中從一個專門的表中選擇同一列?
下一篇:需要幫助將整數轉換為時間
