没有 ON 条件的 MySQL JOIN:了解交叉和内连接
虽然大多数数据库系统需要 ON 子句来进行 JOIN 操作,但 MySQL 提供了独特的功能,允许在某些情况下省略它。 MySQL 中的联接和内联接可以在没有 ON 条件的情况下执行,从而产生交叉联接。
交叉联接:笛卡尔积
交叉联接,在不存在的情况下ON 子句的,生成来自多个表的数据的笛卡尔积。这意味着第一个表中的每一行都会与第二个表中的每一行配对,从而创建一个明显更大的结果集。
不带 ON 子句的内连接
类似地,当使用不带 ON 子句的内连接时,MySQL 的行为与 ANSI 标准不同。结果与交叉联接相同,有效地删除任何过滤或匹配条件。
用例
交叉联接在特定情况下很有用:
推荐做法
虽然 MySQL 允许在没有 ON 条件的情况下进行联接查询,但通常建议显式使用交叉联接,如下所示如下:
SELECT * FROM table1 CROSS JOIN table2
这种方法更加明确,避免与内连接混淆。
右连接和左连接
右外连接和左外连接连接需要 ON 子句来指定匹配条件。因此,有关不带 ON 条件的联接的讨论不适用于这些类型的联接。
以上是MySQL JOIN 可以在没有 ON 子句的情况下工作吗?的详细内容。更多信息请关注PHP中文网其他相关文章!