select语句中有和没有主键列的结果不同.为什么?

Rak*_*ngh 1 sql union

我有一个Query,当我在选择列表中有主键时返回两个不同的结果,当主键不在那里时返回另一个结果.

下面给出的是主键'FDReciptNo'的查询.

使用Primary键结果是(3478)记录,在内部select语句的select语句中没有主键我有1274条记录.

想了解为什么会有这样的差异?

SELECT SUM(PrincipleAmount) AS PrincipleAmount FROM
(
    SELECT  
            FDReceiptNo, PrincipleAmount
    FROM mFixedDeposit
    WHERE   CurrentStatus = ' ' AND 
            DepositDate <= '9/20/2013 12:00:00 AM' AND 
            FDReceiptNo NOT IN
            (
                SELECT FDReceiptNo FROM mFixedDeposit 
                WHERE 
                    TransactionDate > '9/20/2013 12:00:00 AM' AND MaturityDate <= '9/20/2013 12:00:00 AM'
            )

    UNION   
    SELECT  
            FDReceiptNo, PrincipleAmount
    FROM mFixedDeposit
    WHERE   TransactionDate > '9/20/2013 12:00:00 AM' AND 
            MaturityDate <= '9/20/2013 12:00:00 AM'

) AS tbl
Run Code Online (Sandbox Code Playgroud)

geo*_*gas 11

UNION也执行一个DISTINCT,所以如果没有PK,你有多个其余列的出现,这些将减少到一个.

尝试UNION ALL,这并不意味着DISTINCT.