【问题标题】:Multiple conditions in SQL joinsSQL 连接中的多个条件
【发布时间】:2014-12-31 05:46:59
【问题描述】:

如何在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)

【问题讨论】:

  • 只需将条件添加到子句的 WHERE 部分即可。
  • 不要对多个条件使用where 子句。如果你这样做,左连接会变成内连接。您可以在连接的on 子句中定义多个条件

标签: mysql sql sql-server oracle


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    只需指定 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
    

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      以上两个选项都可以使用,具体取决于您的要求。

      【讨论】:

        【解决方案4】:
        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
        

        【讨论】:

          【解决方案5】:

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

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

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-12-11
            • 1970-01-01
            • 2014-04-05
            • 1970-01-01
            • 2010-11-10
            • 1970-01-01
            • 2013-08-17
            • 2014-11-07
            相关资源
            最近更新 更多