Sql 将参数添加到带有UNION changes记录编号的SELECT语句
当我向Sql 将参数添加到带有UNION changes记录编号的SELECT语句,sql,oracle,Sql,Oracle,当我向联合的SELECT子句添加新参数时,我会得到更多记录。。。这怎么可能?难道一个联盟不就是把它们混在一起吗?例如: 编辑:它们完全不同。code列要么是“IN”要么是“OUT”,这就是我用来区分两者的地方 EDIT2:UNION全部给了我80条记录,就像它应该给我的一样,但这很奇怪,因为我的两条SELECT语句是完全不同的 最终编辑:最终的问题是我的一条SELECT语句中的记录不明显,而不是两条SELECT语句之间的记录。谢谢大家 -- Yields 76 records SELECT
联合
的SELECT
子句添加新参数时,我会得到更多记录。。。这怎么可能?难道一个联盟不就是把它们混在一起吗?例如:
编辑:它们完全不同。code
列要么是“IN”要么是“OUT”,这就是我用来区分两者的地方
EDIT2:UNION全部给了我80条记录,就像它应该给我的一样,但这很奇怪,因为我的两条SELECT语句是完全不同的
最终编辑:最终的问题是我的一条SELECT语句中的记录不明显,而不是两条SELECT语句之间的记录。谢谢大家
-- Yields 76 records
SELECT
f.date
, f.code
, f.cost
FROM a.fact f
WHERE f.code = 'IN'
UNION
SELECT
f2.date
, f2.code
, f2.cost
FROM a.fact2 f2
WHERE f2.code = 'OUT'
;
-- Yields 80 records
SELECT
f.key
, f.date
, f.code
, f.cost
FROM a.fact f
WHERE f.code = 'IN'
UNION
SELECT
f2.key
, f2.date
, f2.code
, f2.cost
FROM a.fact2 f2
WHERE f2.code = 'OUT'
;
默认情况下,UNION选择不同的结果,结果集之间必须存在重复项。将UNION
更改为UNION ALL
,您应该会得到相同的结果<代码>联合
选择不同的行,联合所有
应选择所有。如前一个答案所述,联合所有
将解决您的问题,它只选择不同的值
参考资料在不使用union的情况下,您从每个select中获得多少条记录?两个表中的键数据类型是否相同??并且钥匙的非零位也是微调(钥匙)??可能是char和varchar列或空格?肯定没有。。很抱歉顶部的
SELECT
有WHERE code='IN'
和底部的SELECT
有WHERE code='OUT'
其中一个结果集中可能存在重复项,例如,如果一个.fact有两条记录,其中包含匹配的日期、代码和成本,但键不同。这就是问题所在!最初的开发人员没有强制执行唯一的列,我也不认为我需要测试5年前的需求。@caleb.breckon我确信它们不在第一个sql代码中在您的第一个select语句中,没有f.key部分的语句中,在没有union的情况下单独运行每个select,您将发现具有相同日期值的行,代码和成本,在你的案例中,精确到4行。你为什么要重复另一个答案?@davidridge,三个答案在概念上是相同的,但每一个都有不同的价值。在我的回答中,我的目的是帮助提问者提供关于工会声明的参考,以便他更好地理解。另外,如果你认为我重复了答案,我会在第一条评论之后,在问题被回答之前,添加一条带有问题线索的评论。因此,我觉得有必要添加我的答案,尽管当时答案“已经正确回答了两次”