我找不到一個簡單的答案。我的查詢吐出了錯誤的結果,我想這是因爲它沒有看到「AND」作爲實際的連接。在兩列上加入postgres表?
你能不能做這樣的事,如果沒有,什麼是正確的做法:
SELECT * from X
LEFT JOIN Y
ON
y.date = x.date AND y.code = x.code
?
我找不到一個簡單的答案。我的查詢吐出了錯誤的結果,我想這是因爲它沒有看到「AND」作爲實際的連接。在兩列上加入postgres表?
你能不能做這樣的事,如果沒有,什麼是正確的做法:
SELECT * from X
LEFT JOIN Y
ON
y.date = x.date AND y.code = x.code
?
這是可能的:
ON子句是最一般的種連接條件:它需要相同類型的一個布爾值表達式作爲WHERE子句中被使用。如果ON表達式的計算結果爲true,則T1和T2中的一對行匹配。
http://www.postgresql.org/docs/9.1/static/queries-table-expressions.html#QUERIES-FROM
你的SQL看起來OK。
沒關係。事實上,你可以把任何條件 ON子句中,即使是一個 不相關的鍵列,甚至在所有的表,例如:
SELECT * from X
LEFT JOIN Y
ON y.date = x.date
AND y.code = x.code
AND EXTRACT (dow from current_date) = 1
什麼是預期的實際效果? –
語法正確 - 否則您會收到錯誤消息。你的描述「吐出錯誤的結果」雖然沒有告訴我們關於你的問題的任何信息。你必須向我們展示一些樣本數據和預期的輸出。理想情況下,在http://sqlfiddle.com上創建一個小例子 –