2013-07-30 57 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。