在两列上加入postgres表?

cod*_*ama 33 postgresql

我找不到一个直截了当的答案.我的查询是吐出错误的结果,我认为这是因为它没有将"AND"视为实际的连接.

你可以做这样的事情,如果没有,那么正确的做法是什么:

SELECT * from X
LEFT JOIN Y
ON
  y.date = x.date AND y.code = x.code
Run Code Online (Sandbox Code Playgroud)

小智 33

这个有可能:

ON子句是最常见的连接条件:它采用与WHERE子句中使用的布尔值表达式相同的布尔值表达式.如果ON表达式对它们的计算结果为true,则T1和T2中的一对行匹配.

http://www.postgresql.org/docs/9.1/static/queries-table-expressions.html#QUERIES-FROM

你的SQL看起来不错.


Boh*_*ian 29

没关系.实际上,您可以在ON子句中放置任何条件,即使是与键列甚至根本不相关的条件,例如:

SELECT * from X
LEFT JOIN Y
    ON y.date = x.date
    AND y.code = x.code
    AND EXTRACT (dow from current_date) = 1
Run Code Online (Sandbox Code Playgroud)