【发布时间】:2016-05-19 17:35:40
【问题描述】:
当连接表在我的on 上有所有匹配的行时,我如何返回一行(最好是在 ANSI SQL 中)?
错误行为示例:
SELECT table1.*
, whatever
FROM table1
INNER JOIN table2 ON table2.whateverrelation = table1.whateverrelation
AND table2.matching IN(1, 2);
将返回每个 table1 行与 table2 上的匹配关系,即 1 OR 2(即,将返回具有一个或多个 matching 字段的 table1 行。
我怎样才能得到只返回 table2 行相关的 table1 行并且其 matching 是 1 和 2 的东西(所以是 AND 而不是 OR,所以必须至少有一个table2 行与matching = 1 和至少一个与matching = 2,所以它不会显示任何table1 行没有两个匹配)?
我不希望对同一张表进行两次连接,我知道我可以进行两次左连接,一次匹配 1,一次匹配 2,但我事先不知道有多少次匹配会需要的。
干杯
【问题讨论】:
标签: mysql sql postgresql ansi-sql