SELECT (SELECT SUM(table1.col1) FROM table1) AS sum_1,
(SELECT SUM(table2.col1) FROM table2) AS sum_2;
Можете също да го напишете като:
SELECT t1.sum_c1, t1.sum_c2, t2.sum_t2_c1
FROM
(
SELECT SUM(col1) sum_c1,
SUM(col2) sum_c2
FROM table1
) t1
FULL OUTER JOIN
(
SELECT SUM(col1) sum_t2_c1
FROM table2
) t2 ON 1=1;
FULL JOIN се използва с неуспешно условие, така че всяка подзаявка да не даде резултати (празна), без да доведе до липса на резултат от по-голямата заявка.
Не мисля, че заявката, както сте написали, би довела до резултата, който очаквахте да получите, защото прави CROSS JOIN между table1 и table2, което ще увеличи всяка SUM с броя на редовете в другата таблица. Обърнете внимание, че ако таблица1/таблица2 е празна, CROSS JOIN ще накара X редове по 0 реда да върнат празен резултат.
Вижте този SQL Fiddle и сравнете резултатите.