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



我使用这个MySQL文档页面构建了以下查询,该页面是通过这个StackOverflow问题找到的。

它给了我想要的东西:每个人键一个记录,以及那个人参与的最大(最新)匹配键。

但我不明白"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"字段 - 来自表相关子查询或外部子查询的字段。

希望这是有道理的。

相关内容

  • 没有找到相关文章

最新更新