gpt4 book ai didi

SQL 左连接 JOIN 条件中的过滤器与 WHERE 子句中的过滤器

转载 作者:行者123 更新时间:2023-12-03 01:05:00 25 4
gpt4 key购买 nike

我在工作中重构一些sql,偶然发现了一些我不知道如何解释的东西。我认为有两个查询会产生相同的结果,但事实并非如此,我不确定为什么。

查询如下:

select *
from TableA as a
left join TableB b on a.id = b.id and b.status in (10, 100)

select *
from TableA as a
left join TableB b on a.id = b.id
where b.status is null or b.status in (10, 100)

什么时候它们不会返回相同的结果?

最佳答案

与Where条件的最大区别b.status为null或b.status in (10, 100)是当 b.status 为 1 且 b.id=a.id

在第一个查询中,您仍然会从表 A 中获取相应的 B 部分为 NULL 的行,因为 On 条件未完全满足。在第二个查询中,您将获得 a 和 b 表的 JOIN 中的行,该行将在 where 子句中丢失。

关于SQL 左连接 JOIN 条件中的过滤器与 WHERE 子句中的过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52272263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com