我在SQL中有一个有趣的UNION问题。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返回行 - 这是不正确的。我可以确认它不只是纠正通过评论联盟和第二个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"
如果我运行这个版本,我得到返回三行!我假设我正在做一些愚蠢的事情 - 但我无法想象会发生什么。
我假设3行在第二个查询中具有相同的fldA,fldB值。在使用'union'时,它消除了重复项,结果将成为第一个查询的一行。 –
如果三行具有相同的“FldA”和“FldB”值 - “UNION”消除重复,则会出现明显的问题。 –