对于一个问题我有这两种方法,看起来对我来说没问题。有一个更好的方法吗?请指教。
两个查询的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
答案 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
;