gpt4 book ai didi

SQL UNION - 不合逻辑的结果

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

我对 SQL 中的 UNION 有一个有趣的问题。

我的陈述是这样的形式:

with tab as (
(select FldA, FldB From Table1A inner join Table1B on Field1A=Field1B)
UNION
(select FldA, FldB From Table2A inner join Table2B on Field2A=Field2B)
)
select * from tab
where FldA="XYZ"

当我运行它时,我只返回 1 行 - 这是不正确的。我可以通过注释 UNION 和第二个 Select 语句来验证它是否正确:

with tab as (
(select FldA, FldB From Table1A inner join Table1B on Field1A=Field1B)
--UNION
--(select FldA, FldB From Table2A inner join Table2B on Field2A=Field2B)
)
select * from tab
where FldA="XYZ"

如果我运行这个版本,我会返回行!我假设我在做一些愚蠢的事情 - 但我无法想象是什么。

最佳答案

UNION 删除重复项,要保留重复项,请使用 UNION ALL

从这个意义上说,UNIONDISTINCT 的作用相同。与 DISTINCT 一样,如果每个(选定的)列的记录都相同,则记录被认为是重复的。

UNION 删除重复项,无论重复项出现在哪个集合中,因为 DISTINCTUNION 之后执行。

如果您有 2 个查询/数据集 AB,如果将它们UNION 放在一起,您将得到 DISTINCT 两者的结合。如果 A 中有重复项,它们将被删除。如果一条记录存在于 AB 中,它也将被唯一地返回(即,它只在您的最终结果集中出现一次)。

关于SQL UNION - 不合逻辑的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42534265/

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