SQL查询两个查询和联合

时间:2014-08-27 01:42:16

标签: sql join db2 union

对于一个问题我有这两种方法,看起来对我来说没问题。有一个更好的方法吗?请指教。

两个查询的X,Y,Z相同

两个查询并添加值:
从tableA中选择sum(columnA1),sum(columnA2) 其中columnA3 = X,columnA4 = Y,columnA5 = Z;
从tableB中选择sum(columnB1) 其中columnB3 = X,columnB4 = Y,columnB5 = Z;

全联盟: select sum(columnA1),sum(columnA2),sum(columbB1) from(select columnA1,columnA2,null from tableA 其中columnA3 = X,columnA4 = Y,columnA5 = Z. 联合所有 从tableB中选择null,null,columnB1 其中columnB3 = X,columnB4 = Y,columnB5 = Z)unionresult

1 个答案:

答案 0 :(得分:0)

您的两个选项中的每一个都会生成相同的3个数字结果,唯一真正的区别在于交付(作为2个查询或作为单个,组合查询)。

我真的不知道哪个最适合你的目的,但是你增加了一点点开销来获得综合结果。

这是合并结果的另一种可能的替代方案,但我不认为它比你所展示的联合所有方法更好(并且甚至可能更糟)。

SELECT
      SUM(columnA1)
    , SUM(columnA2)
    , (
            SELECT
                  SUM(columnB1)
            FROM tableB
            WHERE columnB3 = X
                  AND columnB4 = Y
                  AND columnB5 = Z
      ) as sum_columnB1
FROM tableA
WHERE columnA3 = X
      AND columnA4 = Y
      AND columnA5 = Z
;