sql關鍵詞執行的先后順序是:首先執行from語句;然后是where語句,group by語句;接著是having語句;最后是order by語句。
【推薦課程:MySQL教程】
sql關鍵詞執行順序
例:
select?m.*?from(select?t.*,rownum?r?from (select?id,name,e.username,e.realname?from?departments?d?,employees?e?where?d.manager=e.username(+) order?by?id?desc?)?t?where?rownum? select?m.*(select?t.*,t.rownum?r?from( select?a,b,c,d?from?table1?order?by?a?desc )?t?where?rownum???
標準的 SQL 的解析順序為
(1)FROM 子句, 組裝來自不同數據源的數據
(2)WHERE 子句, 基于指定的條件對記錄進行篩選
(3)GROUP BY 子句, 將數據劃分為多個分組
(4)使用聚合函數進行計算
(5)使用 HAVING 子句篩選分組
(6)計算所有的表達式
(7)使用 ORDER BY 對結果集進行排序
例
在學生成績表中 (暫記為 tb_Grade), 把 “考生姓名”內容不為空的記錄按照 “考生姓名” 分組, 并且篩選分組結果, 選出 “總成績” 大于 600 分的
SQL 語句為:
select?考生姓名,?max(總成績)?as?max總成績 from?tb_Grade where?考生姓名?is?not?null group?by?考生姓名 having?max(總成績)?>?600 order?by?max總成績
在上面的示例中 SQL 語句的執行順序如下:
(1)?首先執行 FROM 子句, 從 tb_Grade 表組裝數據源的數據
(2)執行 WHERE 子句, 篩選 tb_Grade 表中所有數據不為 NULL 的數據
(3)?執行 GROUP BY 子句, 把 tb_Grade 表按 “學生姓名” 列進行分組
(4)計算 max() 聚集函數, 按 “總成績” 求出總成績中最大的一些數值
(5)?執行 HAVING 子句, 篩選課程的總成績大于 600 分的.
(6)?執行 ORDER BY 子句, 把最后的結果按 “Max 成績” 進行排序.
總結:
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END