Group By 和 Having, Where ,Order by语句的执行顺序
Jun 07, 2016 pm 04:14 PM一个SQL语句往往会产生多个临时视图,那么这些关键字的执行顺序就非常重要了,因为你必须了解这个关键字是在对应视图形成前的字段进行操作还是对形成的临时视图进行操作,这个问题在使用了别名的视图尤其重要。 Group By 和 Having, Where ,Order by这些关键
一个SQL语句往往会产生多个临时视图,那么这些关键字的执行顺序就非常重要了,因为你必须了解这个关键字是在对应视图形成前的字段进行操作还是对形成的临时视图进行操作,这个问题在使用了别名的视图尤其重要。
Group By 和 Having, Where ,Order by这些关键字是按照如下顺序进行执行的:Where, Group By, Having, Order by。
- 首先where将最原始记录中不满足条件的记录删除(所以应该在where语句中尽量的将不符合条件的记录筛选掉,这样可以减少分组的次数)
- 然后通过Group By关键字后面指定的分组条件将筛选得到的视图进行分组
- 接着系统根据Having关键字后面指定的筛选条件,将分组视图后不满足条件的记录筛选掉
- 最后按照Order By语句对视图进行排序,这样最终的结果就产生了。
在这四个关键字中,只有在Order By语句中才可以使用最终视图的列名,如:
<code>SELECT FruitName, ProductPlace, Price, ID AS IDE, Discount FROM T_TEST_FRUITINFO WHERE (ProductPlace = N'china') ORDER BY IDE </code>
这里只有在ORDER BY语句中才可以使用IDE,其他条件语句中如果需要引用列名则只能使用ID,而不能使用IDE。
PS:
-
凡是在group by后面出现的字段,必须同时在select后面出现;
-
凡是在select后面出现的、同时未在聚合函数中出现的字段,必须同时出现在group by后面.
-
having 子句被限制子已经在SELECT语句中定义的列和聚合表达式上。

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Python-Skript, das alle 5 Minuten ausgeführt wird

So verwenden Sie Python für die Skripterstellung und Ausführung unter Linux

Wie schreibe ich PHP-Code im Browser und verhindere, dass der Code ausgeführt wird?

So führen Sie den Brown-Forsythe-Test in Python durch

Ein praktischer Leitfaden zur Where-Methode in Laravel-Sammlungen

So verwenden Sie die Where-Methode in Laravel-Sammlungen

Vom Anfänger bis zum Experten: Beherrschen Sie die Fähigkeiten im Umgang mit Ist- und Wo-Selektoren

Wie führe ich ANCOVA in Python durch?
