在 MySQL 中,只写 JOIN 等价于?
在 MySQL 中,只写 JOIN
等价于 INNER JOIN
。
这是 MySQL 的默认行为,具体规则如下:
关键结论
-
JOIN
默认行为
当只写JOIN
时,MySQL 会将其视为INNER JOIN
,即仅返回两个表中匹配的行。sql复制代码
SELECT * FROM table1
JOIN table2 ON table1.id = table2.id;
等价于:
sql复制代码
SELECT * FROM table1
INNER JOIN table2 ON table1.id = table2.id;
-
其他 JOIN 类型需显式声明
若需LEFT JOIN
、RIGHT JOIN
或CROSS JOIN
,必须明确写出:sql复制代码
SELECT * FROM table1
LEFT JOIN table2 ON table1.id = table2.id; -- 保留左表所有行
为什么需要明确?
- 避免歧义:不同数据库的默认行为可能不同(如某些数据库默认
JOIN
为CROSS JOIN
)。 - 代码可读性:显式声明 JOIN 类型(如
INNER JOIN
)能让意图更清晰。
总结
JOIN
=INNER JOIN
(MySQL 默认值)- 其他 JOIN 类型(如
LEFT JOIN
)需显式指定。