gpt4 book ai didi

MySQL LEFT JOIN .. ON .. 子句

转载 作者:行者123 更新时间:2023-11-29 06:16:59 24 4
gpt4 key购买 nike

我目前正在将 MySQL 数据库移植到另一个 DBMS。我遇到了以下具有以下结构的查询。

SELECT ... FROM table1 AS tb1 
LEFT JOIN Table2 AS tb2
ON tb1.x = tb2.x
AND tb2.y = 2 AND tb2.z = 3 ...

我的目标 DBMS (DB2)“AND tb2.y = 2 AND tb2.z = 3”不允许使用以下结构,因此我将其移至 WHERE 子句。不幸的是,在移动它之后,查询似乎没有从 MySQL 返回相同的行。

最佳答案

在外连接中,当将谓词从 ON 子句移动到 WHERE 子句时,您必须考虑到连接产生不匹配的记录,因此列外部表中的数据将全部为 NULL

我没有 DB2 经验,因此可能还有其他我不知道的微妙之处,但这就是我重写查询的方式。检查连接列中的 NULL 可以直接指示连接是否找到匹配项。

SELECT ... FROM table1 AS tb1 
LEFT JOIN Table2 AS tb2
ON tb1.x = tb2.x
WHERE tb2.x IS NULL
OR (tb2.y = 2 AND tb2.z = 3)

关于MySQL LEFT JOIN .. ON .. 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5869233/

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