SELECT (SELECT SUM(table1.col1) FROM table1) AS sum_1,
(SELECT SUM(table2.col1) FROM table2) AS sum_2;
Bạn cũng có thể viết nó là:
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 được sử dụng với một điều kiện dud để một trong hai truy vấn con không thể tạo ra kết quả nào (trống) mà không làm cho truy vấn lớn hơn không có kết quả.
Tôi không nghĩ rằng truy vấn như bạn đã viết sẽ tạo ra kết quả mà bạn mong đợi nhận được, bởi vì nó đang thực hiện CROSS JOIN giữa table1 và table2, điều này sẽ làm tăng mỗi SUM bằng số hàng trong bảng khác. Lưu ý rằng nếu một trong hai table1 / table2 trống, CROSS JOIN sẽ khiến X hàng x 0 hàng trả về kết quả trống.
Hãy xem SQL Fiddle này và so sánh kết quả.