求大佬解释一下

题目:
查出 2006-6-1 到2006-7-1之间举行的所有比赛,并且用以下形式列出:拜仁 2:0 不来梅 2006-6-21
图片描述

select m.*,t1.tname as htname,t2.tname as gtname from m inner join t as t1 on t1.tid=m.hid inner join t as t2 on t2.tid=m.gid

我知道如果这样写:

select m.*,t1.tname as htname,t2.tname as gtname from m

肯定错的,因为没这些字段!那为什么加了个连接别名就可以运行了呢
它运行顺序是什么样的

阅读 2.3k
1 个回答
新手上路,请多包涵

inner join 引入了另一张表并进行了联结(join),第一个SQL等价于:
select m.*,t1.tname as htname,t2.tname as gtname
from m,t as t1, t as t2
where t1.tid=m.hid and t2.tid=m.gid
看到3张表联结,并且进行了联结条件选择了吗?
别名是必须的,因为t被打开了两次,分别作为独立的数据表被联结。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题