SQL连接中的多个条件

时间:2014-11-04 10:57:28

标签: mysql sql sql-server oracle

如何在 SQL 加入中指定多个条件?我知道A.key = B.key除此之外是强制性的,在 SQL 中指定多个条件下面是否正确?

ON (A.key=B.key and/or cond1 and/or cond2 ...etc)

ON (A.key=B.key where cond1 and/or cond2 ..etc)

5 个答案:

答案 0 :(得分:7)

您可以在连接中指定任意数量的条件,如:

ON A.Key=B.Key
AND b.value>100
AND (a.value>b.value OR b.value2 IS NULL)

答案 1 :(得分:1)

只需在ON条件后指定条件。

SELECT A.ColumnName, B.ColumnName FROM Table1 A <LEFT / RIGHT / INNER JOIN> Table2 B ON
A.Key = B.Key 
AND A.Key > 0 
AND (B.ColumnName <= 10 OR B.ColumnName >= 20)
AND A.Key > B.Key

答案 2 :(得分:0)

SELECT A.Column1, B.Column2 FROM Table1 A LEFT OUTER JOIN Table2 B ON A.KEY=B.KEY 
AND Condition 1 AND ( Condition 2 OR Condition 3) OR Condition 4

答案 3 :(得分:0)

我认为你的第一个选择是正确的。

您可以使用多个连接条件,例如:

ON(A.key = B.key和/或cond1和/或cond2 ......等)。

对于第二个,WHERE应该在ON子句之后(使用JOIN子句的所有连接)。然后,这将在JOIN之后过滤数据。只需在WHERE之前关闭括号,它也可以正常工作。 像:

ON(A.key = B.key)WHERE cond1和/或cond2 ..etc

根据您的要求,可以使用上述两个选项。

答案 4 :(得分:0)

Arun Pati提供的答案适合我的问题。谢谢。以下是答案

” 您可以使用多个连接条件,例如:

ON(A.key = B.key和/或cond1和/或cond2 ......等)。

对于第二个,WHERE应该在ON子句之后(使用JOIN子句的所有连接)。然后,这将在JOIN之后过滤数据。只需在WHERE之前关闭括号,它也可以正常工作。像:

ON(A.key = B.key)WHERE cond1和/或cond2 ..etc“