如何 return 连接全部存在的行 SQL
How to return a row where joins ALL exist SQL
当加入的 table 在我的 on
上有所有匹配的行时,我如何 return 一行(最好是在 ANSI SQL 中)?
错误行为示例:
SELECT table1.*
, whatever
FROM table1
INNER JOIN table2 ON table2.whateverrelation = table1.whateverrelation
AND table2.matching IN(1, 2);
将 return 每个 table1
行与 table2
上的匹配关系为 1 或 2(即 return 一个 table1
行与一个或更多 matching
个字段。
我怎样才能得到 return 只有 table1
行的东西,这些行有 table2
行相关并且 matching
既是 1 又是 2(所以一个 AND而不是 OR,因此必须至少有一个 table2
行 matching
= 1,并且至少有一个 matching
= 2,因此它不会显示任何 table1
没有两个匹配项的行)?
我不想对同一个 table 进行两次连接,我知道我可以进行两次左连接,一次匹配 1,一次匹配 2,但我不这样做事先知道我需要多少火柴。
干杯
您可以使用:
SELECT table1.col1, ....
FROM table1
INNER JOIN table2
ON table2.whateverrelation = table1.whateverrelation
GROUP BY table1.col1, ....
HAVING SUM(table2.matching = 1) > 0
AND SUM(table2.matching = 2) > 0;
当加入的 table 在我的 on
上有所有匹配的行时,我如何 return 一行(最好是在 ANSI SQL 中)?
错误行为示例:
SELECT table1.*
, whatever
FROM table1
INNER JOIN table2 ON table2.whateverrelation = table1.whateverrelation
AND table2.matching IN(1, 2);
将 return 每个 table1
行与 table2
上的匹配关系为 1 或 2(即 return 一个 table1
行与一个或更多 matching
个字段。
我怎样才能得到 return 只有 table1
行的东西,这些行有 table2
行相关并且 matching
既是 1 又是 2(所以一个 AND而不是 OR,因此必须至少有一个 table2
行 matching
= 1,并且至少有一个 matching
= 2,因此它不会显示任何 table1
没有两个匹配项的行)?
我不想对同一个 table 进行两次连接,我知道我可以进行两次左连接,一次匹配 1,一次匹配 2,但我不这样做事先知道我需要多少火柴。
干杯
您可以使用:
SELECT table1.col1, ....
FROM table1
INNER JOIN table2
ON table2.whateverrelation = table1.whateverrelation
GROUP BY table1.col1, ....
HAVING SUM(table2.matching = 1) > 0
AND SUM(table2.matching = 2) > 0;