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最低到最高排序的不同选择。

IE:

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 回答