0

私の質問は簡単です。UNION ALLクエリが行う自動ソートをどのように回避しますか?

これは私のクエリです

SELECT * INTO #TEMP1 FROM Final

    SELECT * INTO #TEMP2 FROM #TEMP1 WHERE MomentId = @MomentId

    SELECT * INTO #TEMP3 FROM #TEMP1 WHERE RowNum BETWEEN @StartRow AND @EndRow

    SELECT * INTO #TEMP4 FROM (SELECT *FROM #TEMP3 UNION ALL SELECT *FROM #TEMP2) as tmp

    SELECT DISTINCT * FROM #TEMP4

SQL Server 2008 を使用しています。Union ALL を単純な Concatenate のように実行する必要がありますが、そうではありません! これであなたの助けに感謝します。

4

3 に答える 3

1

UNION ALLUNIONasは新しい/個別のレコードのみを追加しますが、すべてのレコードを追加します。

Since you are using UNION ALL and using DISTINCT soon after, I think you are looking for UNION

SELECT * INTO #TEMP4 FROM
    (
     SELECT * FROM #TEMP3 
     UNION  --JUST UNION 
     SELECT * FROM #TEMP2
    ) AnotherTemp

Or you can simplify it as

SELECT * INTO #TEMP4 FROM
        SELECT DISTINCT * 
        FROM Final
        WHERE MomentId = @MomentId OR RowNum BETWEEN @StartRow AND @EndRow
于 2013-09-27T12:32:19.567 に答える