Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将参数添加到带有UNION changes记录编号的SELECT语句_Sql_Oracle - Fatal编程技术网

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,三个答案在概念上是相同的,但每一个都有不同的价值。在我的回答中,我的目的是帮助提问者提供关于工会声明的参考,以便他更好地理解。另外,如果你认为我重复了答案,我会在第一条评论之后,在问题被回答之前,添加一条带有问题线索的评论。因此,我觉得有必要添加我的答案,尽管当时答案“已经正确回答了两次”