[英]How to select 2 tables without join and using difference WHERE clause?
[英]How to join 2 tables without an ON clause
我想從兩個不同的表中獲取SUM(column_a)
,並獲得它們的區別。 我正在使用MySQL。
Table A's sum = 1234
Table B's sum = 4001
我不知道在我的ON
條款中放什么:
SELECT
SUM(a.column1) AS table_a_sum,
SUM(b.column1) AS table_b_sum,
SUM(a.column1) - SUM(b.column1) AS difference
FROM table_a a
JOIN table_b b
ON ??????
無條件的連接是交叉連接。 對於右表中的每一行,交叉連接重復左手表的每一行:
FROM table_a a
CROSS JOIN table_b b
請注意,在MySQL中, cross join
/ join
/ inner join
是相同的。 所以你可以寫:
FROM table_a a
JOIN table_b b
只要省略on
子句,這將作為交叉連接。
如果您想從兩個表中對兩列進行求和,則交叉連接將無法工作,因為它會重復行。 你會得到高度膨脹的數字。 對於總和,根據@sgeddes回答,更好的方法使用子查詢。
這是使用子查詢的一個選項 - 有幾種方法可以做到這一點:
SELECT
table_a_sum,
table_b_sum,
table_a_sum - table_b_sum AS difference
FROM
(SELECT SUM(column1) table_a_sum FROM table_a) a,
(SELECT SUM(column1) table_b_sum FROM table_b) b
您想先進行匯總,然后進行計算:
select a.suma, b.sumb, a.suma - b.sumb
from (select sum(a.column1) as suma from tablea) a cross join
(select sum(b.column1) as sumb from tableb) b
在表格之間進行cross join
將生成笛卡爾積,這將會弄亂您的總和。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.