1

選択リストに主キーがある場合は 2 つの異なる結果を返し、主キーがない場合は別の結果を返すクエリがあります。

以下は、主キー「FDReciptNo」を使用したクエリです。

主キーを使用すると、結果は(3478)レコードになり、両方の内部選択ステートメントの選択ステートメントに主キーがないと、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
4

2 に答える 2

11

UNIONも実行するDISTINCTため、PK がない場合、残りの列が複数出現する場合、これらは 1 つに削減されます。

UNION ALLを意味しない を試してみてくださいDISTINCT

于 2013-10-08T21:42:43.223 に答える