gpt4 book ai didi

sql - 条件的放置重要吗?

转载 作者:行者123 更新时间:2023-11-29 11:25:17 25 4
gpt4 key购买 nike

以下 2 个查询给出了不同的结果:

SELECT A.source_code, B.quantity
FROM Table_A AS A
LEFT JOIN Table_B AS B ON B.merchant_id = A.merchant_id
AND B.agent_id = A.agent_id
AND B.default IS NULL
WHERE A.month='2011-10-01'
AND B.type='600'

SELECT A.source_code, B.quantity
FROM Table_A AS A
LEFT JOIN Table_B AS B ON B.merchant_id = A.merchant_id
AND B.agent_id = A.agent_id
WHERE A.month='2011-10-01'
AND B.type='600'
AND B.default IS NULL

我假设条件对两个查询执行相同的操作,只是在不同的时间。我错过了什么吗?

最佳答案

它们是并且应该是不同的。

考虑这样一种情况,您有一个 a 和一个 b 在商家和代理 ID 上匹配,并且 b.default 不为空。

在第一种情况下,您会找到 a,然后找不到符合条件的 b,因为没有匹配 id 的 b 并且默认为 null。但是因为它是左连接,所以您仍然会在输出中获得包含“a”数据的记录。

在第二种情况下,您将找到 a 并找到匹配的 b。但是因为 b 未通过 WHERE 子句,所以该记录被排除在输出之外。

如果您正在执行完全联接,将条件置于 ON 与 WHERE 中将不会更改输出。但是在左连接或右连接中,它确实以我在上面尝试描述的方式改变了输出。

关于sql - 条件的放置重要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8451686/

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