【问题标题】:SQL - Need to conditionally join based on value in TableB columnSQL - 需要根据表列中的值进行条件连接
【发布时间】:2017-06-08 15:38:20
【问题描述】:

我需要知道TABLE A 中在TABLE B 中具有连接记录的行基于TABLE B 中的列值,但我还需要返回TABLE A 中的行在@ 中不匹配的行987654326@.

似乎我需要一个 LEFT JOIN 和一个 LEFT OUTER JOIN,所以我不确定在那里做什么。我知道如何做每一个,但不明白如何一起做。

架构如下:

TABLE_A
pk

TABLE_B
pk
a_fk
some_value

我需要连接行,其中 Table_A 在 Table_B 中没有连接记录,或者 Table_A 在 Table_B 中有连接记录行(它可以有很多),其中 some_value 不等于“thisValue”

谢谢。

【问题讨论】:

标签: sql


【解决方案1】:

左连接是左外连接。外连接保留了其中一张表,这是您猜测后的结果。

SELECT *
FROM Table A
LEFT JOIN Table B
ON TableA.Column = TableB.Column
AND B.SomeValue <> 'ThisValue'

所有匹配的行都将填充 B 信息,所有没有匹配的行将在 B 数据中具有空值

【讨论】:

  • @mstrom 我添加了一个额外的连接条件,应该符合您的要求
猜你喜欢
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
相关资源
最近更新 更多