SQL特殊FROM子句功能咨询:table1 table2写法含义解析
理解这个特殊SQL FROM子句的写法
嘿,这个看起来有点奇怪的SQL语句,其实是SQL标准中定义的表别名简化写法,很多主流数据库(比如SQL Server、MySQL等)都支持这种语法,所以它能正常运行完全没问题!
拆解语句的真实含义
你看到的这段查询:
SELECT some_tables FROM table1 table2 inner join table3 table4 on table2.id = table4.id
其实等价于显式使用AS关键字定义别名的写法:
SELECT some_tables FROM table1 AS table2 INNER JOIN table3 AS table4 ON table2.id = table4.id
简单来说:
table1 table2:把table1表的别名设置为table2,后续查询中用table2指代原表table1table3 table4:同理,把table3表的别名设置为table4,后续用table4指代table3- 整个语句的核心功能是:将
table1和table3通过id字段做内连接,筛选出两个表中id匹配的记录,然后查询指定的列(这里的some_tables应该是实际查询中具体列名的占位,比如table2.name, table4.value这类)
为什么会用这种写法?
SQL标准允许省略AS关键字来定义表别名,这是一种简写方式。不过这种写法的可读性相对较差,尤其是当别名和原表名差异较大时,很容易让人产生困惑——就像你一开始的反应一样。
你提到之前的查询无法返回正确数据,很可能是之前的查询没有正确使用别名来区分连接的表,或者连接条件定义有误;而这个语句通过明确的别名(哪怕是简写的方式),清晰指定了连接的两个表以及匹配条件,所以能正确返回结果。
小提示
虽然这种简写合法,但在实际开发中,更推荐显式写出AS关键字(比如table1 AS table2),这样代码的可读性会更高,团队协作时也不容易产生误解。
内容的提问来源于stack exchange,提问作者Leonardo Bassi
相关产品推荐
相关产品推荐

