gpt4 book ai didi

sql - 如何使用左外连接和 tableB 的 where 条件从 tableA 中获取所有记录?

转载 作者:行者123 更新时间:2023-12-02 07:54:53 25 4
gpt4 key购买 nike

基本上,我想要的是,如果 tableB 中有一条类型为“X”的记录,我想查看它,否则我不想查看,但我想要 tableA 中的所有记录。

我知道我可以通过将 tableB.type = 'X' 放在 LEFT OUTER JOIN ON 子句中来完成此操作,但我不能这样做,因为我只能使用 where 条件,因为我正在使用一个程序的受限查询管理器,我不会命名,但我绝对讨厌。 :)

SELECT *
FROM tableA
LEFT OUTER JOIN ON tableA.ID = tableB.ID
WHERE tableB.type = 'X'

我该如何实现?

编辑

我已经试过了,但我仍然没有从表 A 中获取所有记录。我正在 SQL Server 上对此进行测试,以避免长时间等待我的查询在生产系统上运行。如果有帮助,我很确定生产系统正在使用 Oracle。

SELECT *
FROM tableA LEFT OUTER JOIN ON tableA.ID = tableB.ID
WHERE tableB.type = 'X' OR tableB.type IS NULL

最佳答案

检查表 B 中的 null:

SELECT *
FROM tableA LEFT OUTER JOIN ON tableA.ID = tableB.ID
WHERE tableB.type = 'X'
OR tableB.type IS NULL

这会在连接匹配时从两个表中获取所有内容,而在表 B 中没有相应记录时从表 A 中获取所有内容。

如果 type 自然可以为 null,您需要将条件更改为更合理的内容:

SELECT *
FROM tableA LEFT OUTER JOIN ON tableA.ID = tableB.ID
WHERE tableB.type = 'X'
OR tableB.ID IS NULL

假设ID是主键,自然不能为null,会得到相同的结果。

关于sql - 如何使用左外连接和 tableB 的 where 条件从 tableA 中获取所有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1488113/

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