使用UNION为SELECT语句添加参数会更改记录号

cal*_*kon 3 sql oracle

当我在a的SELECT子句中添加一个新参数时UNION,我会得到更多记录......这怎么可能?是不是UNION只是将它们混合在一起?例:

编辑:他们绝对不同.该code列是"IN"或"OUT",这就是我用来分隔两者的原因.

EDIT2:UNION ALL给了我80条记录,就像它应该的那样,但它很奇怪,因为我的两个SELECT语句绝对不同.

最终编辑:最终问题是我的一个SELECT语句中的记录不是DISTINCT,而是在两个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'
;
Run Code Online (Sandbox Code Playgroud)

Zdr*_*nev 5

更改UNION到UNION ALL,你应该得到相同的结果.UNION选择不同的行,UNION ALL应选择全部.