1

IBM を呼び出す SQL Server でこのクエリを実行すると、

Select * from openquery(ibm,'
                        Select COST_AMT,'Query1' as Query 
                           from table
                           where clause 
                           with ur;
')
union
Select * from openquery(ibm,'
                           Select COST_AMT,'Query2' as Query 
                           from table
                           different where clause 
                           with ur;
')

ユニオン クエリでは、それらを個別に実行して結果をまとめた場合とは異なる結果が得られます。openquery 内でユニオン クエリを試してみたので、これは IBM のものだと思います。COST_AMT結果は、最低から最高へとソートされ た明確な選択のように見えます。

すなわち:

1,クエリ1
2,クエリ1
3,クエリ1
1,クエリ2
2,クエリ2
3,クエリ2

しかし、データは実際には次のようになります。

1,クエリ1
1,クエリ1
1,クエリ1
2,クエリ1
2,クエリ1
3,クエリ1
1,クエリ2
1,クエリ2
1,クエリ2
2,クエリ2
2,クエリ2
3,クエリ1

IBM ユニオン クエリについて何か不足していますか? 合計して答えを得ることができることはわかっていますが(これは私が計画していないことです)、なぜこれが起こっているのかについてもっと知りたいです.

4

1 に答える 1

1

これは「ibm」や「db2」とは関係ありません。SQL UNION 演算子は重複を削除します。重複を保持するには、UNION ALL を使用します。

于 2013-07-30T14:37:15.877 に答える