【问题标题】:Conditional join in SQL (maybe Case statement)SQL中的条件连接(可能是Case语句)
【发布时间】:2021-08-30 23:13:03
【问题描述】:

我有两个表 A 和 B,希望表 A 根据两个条件离开连接表 B。

  • 如果表B中parameter1='a',则左连接A.parameter2=B.parameter2
  • 如果parameter1'a'在表B中,那么left join A.parameter3=B.parameter3

如何在 SQL 中进行这种条件连接?

我用过 从一个 left join B on B.1='a' 然后 A.2=B.2 的情况 当 B.1'a' 那么 A.3=B.3

总是在"="

附近出错

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: sql join


【解决方案1】:

你可以简单地使用逻辑:

from a left join
     b
     on (b.1 = 'a' and a.2 = b.2) or
        (b.1 <> 'a' and a.3 = b.3)

唯一需要注意的是:or 通常会降低 joins 的性能,因此与单独的每个条件相比,这可能会减慢您的查询(很多!)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 2016-07-31
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多