很多SQL查询都是以SELECT开始的。不过,最近我跟别人解释什么是窗口函数,我在网上搜索”是否可以对窗口函数返回的结果进行过滤“这个问题,得出的结论是”窗口函数必须在WHERE和GROUP BY之后,所以不能”。于是我又想到了另一个问题:SQL查询的执行顺序是怎样的?
好像这个问题应该很好回答,毕竟自己已经写了上万个SQL查询了,有一些还很复杂。但事实是,我仍然很难确切地说出它的顺序是怎样的。
SQL查询的执行顺序
于是我研究了一下,发现顺序大概是这样的。SELECT并不是最先执行的,而是在第五个。
这张图回答了以下这些问题
这张图与SQL查询的语义有关,让你知道一个查询会返回什么,并回答了以下这些问题: