关于FROM关键字的MySQL语法说明

关于FROM关键字的MySQL语法说明,mysql,correlated-subquery,Mysql,Correlated Subquery,我使用从中找到的 它给了我我想要的:每个personkey一个记录,以及该人参与的最大(最近)匹配键 但是我不理解“s1”和“s2”的用途,也不理解FROM行中使用的结构(因为我不知道它叫什么,所以很难对它进行搜索。)这个查询中到底发生了什么 SELECT personforeignkey, matchforeignkey FROM peoplematchesheroes s1 WHERE matchforeignkey = (SELECT MAX(s2.matchforeignkey

我使用从中找到的

它给了我我想要的:每个personkey一个记录,以及该人参与的最大(最近)匹配键

但是我不理解“s1”和“s2”的用途,也不理解FROM行中使用的结构(因为我不知道它叫什么,所以很难对它进行搜索。)这个查询中到底发生了什么

SELECT personforeignkey, matchforeignkey

FROM   peoplematchesheroes s1

WHERE  matchforeignkey = (SELECT MAX(s2.matchforeignkey)
                          FROM peoplematchesheroes s2
                          WHERE s1.personforeignkey = s2.personforeignkey)
注意:我知道这个查询效率很低,但我想在尝试优化之前了解相关子查询的结构。

s1和s2在这种情况下都是针对同一个表“peoplematchesheroes”。s1用作外部查询的别名,s2用作内部相关子查询的别名

对于相关子查询,不必使用表别名,但在您的情况下,由于内部查询也引用与外部查询相同的表,因此需要对它们使用别名。可以将其视为范围解析,因为否则就不可能判断您引用的是哪个“personforeignkey”字段—表相关子查询中的字段还是外部字段

希望这是有意义的