如何通过INNER JOIN在SQL中精确匹配并执行内连接查询?
- 内容介绍
- 相关推荐
本文共计954个文字,预计阅读时间需要4分钟。
sqlINNER JOIN返回两张表中所有存在联接字段的记录,本质是取交集。它不关心字段名是否相同,只看ON后的条件是否为真。
- 必须显式写出
ON子句,不能省略(有些方言允许用USING,但可读性差且限制多) - 表别名强烈建议加上,否则字段冲突时会报错:
Column 'id' in field list is ambiguous -
JOIN和INNER JOIN完全等价,后者更明确,推荐始终写全
SELECT u.name, o.order_date FROM users u INNER JOIN orders o ON u.id = o.user_id;
ON 和 WHERE 的区别必须分清
很多人把过滤条件随手塞进 WHERE,结果发现数据变少、甚至变成外连接效果——这是因为 ON 在连接阶段生效,WHERE 是连接完成后再过滤。
本文共计954个文字,预计阅读时间需要4分钟。
sqlINNER JOIN返回两张表中所有存在联接字段的记录,本质是取交集。它不关心字段名是否相同,只看ON后的条件是否为真。
- 必须显式写出
ON子句,不能省略(有些方言允许用USING,但可读性差且限制多) - 表别名强烈建议加上,否则字段冲突时会报错:
Column 'id' in field list is ambiguous -
JOIN和INNER JOIN完全等价,后者更明确,推荐始终写全
SELECT u.name, o.order_date FROM users u INNER JOIN orders o ON u.id = o.user_id;
ON 和 WHERE 的区别必须分清
很多人把过滤条件随手塞进 WHERE,结果发现数据变少、甚至变成外连接效果——这是因为 ON 在连接阶段生效,WHERE 是连接完成后再过滤。

