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

标签 mysql sql

我想从两个不同的表中获取SUM(column_a),并求出它们的差值。我正在使用 MySQL。

表 A 的总和 = 1234

表 B 的总和 = 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 的回答,更好的方法是使用子查询。

关于mysql - 如何在没有 ON 子句的情况下连接 2 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15508142/

相关文章:

sql - PostgreSQL : Building a nested json structure on a single table?

python - (Python/JSON/MySQL) 关于 JSON 格式的财务数据不会传输到数据库的建议

c# - 为主键值创建数组

mysql - 将Pentaho演示数据库修改为MySQL后,管理控制台损坏

mysql - 如何用数据表解决Codeigniter中的搜索问题

mysql - sql查询中where子句中n的用途是什么

sql - 排除两个字段不具有特定值的结果

MYSQL unknown clause join column in next join

java - 使用日期类型更新 JTable 单元格

sql - 查看最近编辑的 etherpads