2013-07-30 85 views
1

當我執行在SQL Server此查詢其調用IBM,IBM DB2聯合查詢壞的結果

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,Query1 
2,Query1 
3,Query1 
1,Query2 
2,Query2 
3,Query2 

但數據實際上是這樣的:

 
1,Query1 
1,Query1 
1,Query1 
2,Query1 
2,Query1 
3,Query1 
1,Query2 
1,Query2 
1,Query2 
2,Query2 
2,Query2 
3,Query1 

我失去了一些關於IBM聯合查詢?我意識到我可以總結並得到答案(這是我計劃不做的),但我想知道更多關於爲什麼發生這種情況。

回答

1

這與「ibm」或「db2」無關 - SQL UNION運算符刪除重複項。要保留重複項,請使用UNION ALL。