一尘不染

如何在没有ON子句的情况下联接2个表

sql

我想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 ??????

阅读 153

收藏
2021-05-23

共1个答案

一尘不染

无条件的联接是交叉联接。交叉联接为左侧表的每一行重复右侧表的每一行:

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答案,更好的方法是使用子查询。

2021-05-23