SQL左连接-右表中的固定值

萨加尔(Sagar morakhia)

我有2个表,分别是A和B。作为现有流程的一部分,它的工作原理如下

Select A.a, B.b
from A left join B
on A.c=B.C
and B.b = 'xyz'

现在,由于特定的要求,我需要在where子句中使用Bb ='xyz'。像这样

Select A.a, B.b
from A left join B
on A.c=B.C
where B.b = 'xyz'

但是,一旦我这样做,它就会作为内部联接起作用。

如何调整查询,以便使用where子句获得所需的输出。

戈登·利诺夫

你不能。好吧,如果您在from子句中使用子查询,则可以

select A.a, B.b
from A left join
     (select B.*
      from B
      where B.b = 'xyz'
     ) B
     on A.c = B.C;

如果只有一行匹配,也可以使用相关子查询:

select A.a,
       (select B.b
        from B
        where A.c = B.C and B.b = 'xyz'
       ) B
from A;

或者,您可以“合并全部”额外的结果:

select A.a, B.B
from A left join
     B
     on A.c = B.C
where B.b = 'xyz'
union all
select A.a, NULL
from A
where not exists (select 1 from B A.c = B.C and B.b = 'xyz')

很容易写:

select A.a, B.b
from A left join
     B
     on A.c = B.C
where B.b = 'xyz' or B.b is null;

但是,这不是相同的逻辑。考虑:

一种

A    C
1    1
2    2

B     C
xyz   1
abc   1
abc   2

左联接版本返回:

1    xyz
2    null

where版本的回报:

1    xyz

因为存在另一个值匹配项,所以将“ 2”行过滤掉。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL 左连接 - 右表中的多行

来自分类Dev

中间SQL连接中的“左”和“右”表是什么?

来自分类Dev

中间SQL连接中的“左”和“右”表是什么?

来自分类Dev

JSON SQL中不包含固定值

来自分类Dev

(My)SQL左/右/内连接的方向

来自分类Dev

(My)SQL左/右/内连接的方向

来自分类Dev

SQL左连接在单个表上

来自分类Dev

左连接表SQL的UPDATE SUM

来自分类Dev

SQL Server 左连接未从左表返回预期记录

来自分类Dev

sql左连接的最小值

来自分类Dev

左连接与右表中的位置

来自分类Dev

Mysql左连接,条件在右表中

来自分类Dev

SQL 按固定值列表分组

来自分类Dev

SAS 中的 SQL:尝试通过左连接计算零值

来自分类Dev

SQL左外连接具有三个表

来自分类Dev

PHP / MYSQL-仅在表中显示左连接项,但在列中连接右连接值

来自分类Dev

通过从右表中采样来填充左连接的 NaN 值

来自分类Dev

Laravel 查询生成器中的 SQL 左连接错误

来自分类Dev

SQL按列值总和分组不固定值

来自分类Dev

与空值表左连接

来自分类Dev

在 Postgres 中左连接

来自分类Dev

mysql左连接/右连接3个表

来自分类Dev

SQL 两个左连接只产生第一个表中的数据

来自分类Dev

为什么左外连接对 SQL 表中不同类型的属性不起作用?

来自分类Dev

SQL:将数据从一个表复制到另一个表,同时添加其他固定值列

来自分类Dev

LINQ右连接和左连接

来自分类Dev

右外连接到左外连接

来自分类Dev

在SQL中执行左外连接时出现SQL语法错误

来自分类Dev

如果表名称在“左连接”中颠倒了,是否会导致“右连接”?