在使用JOIN查询时为何必须两次指定所引用的表?
为什么JOIN查询里要重复指定表名?
- 首先得明确两个位置的作用:
FROM/JOIN是告诉数据库你要查询哪些表,属于数据源声明;而SELECT里加表名前缀是明确你要的列来自哪个表,避免数据库混淆。 - 核心原因是解决列名歧义:如果关联的多个表存在同名列(比如table1和table2都有
name列),只写SELECT name的话,数据库根本不知道你要取哪个表的name,直接就会报错。就算当前表没有重名列,加表名前缀也能让SQL逻辑更清晰,后续表结构变更时不容易出问题。 - 你也可以给表起别名来简化写法,比如:
用select t1.name from table1 t1 inner join table2 t2 on t1.id = t2.table1_idt1代替table1,既明确了列的来源,又让SQL更简洁。
内容的提问来源于stack exchange,提问作者Cyber
相关产品推荐
相关产品推荐

