sql執行順序
阿新 • • 發佈:2018-09-03
calc alc avi .cn pos for osi lis ref
執行順序:
sql的解析順序是從左往右,從上往下的。(類比編譯)
官方給出的select查詢sql結構說明如下:
SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] SQL_NO_CACHE [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [FROM table_references [PARTITION partition_list] [WHERE where_condition] [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]] [HAVING where_condition] [WINDOW window_name AS (window_spec) [, window_name AS (window_spec)] ...] [ORDER BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [INTO OUTFILE ‘file_name‘ [CHARACTER SET charset_name] export_options | INTO DUMPFILE ‘file_name‘ | INTO var_name [, var_name]] [FOR {UPDATE | SHARE} [OF tbl_name [, tbl_name] ...] [NOWAIT | SKIP LOCKED] | LOCK IN SHARE MODE]]
一、sql執行順序
(1) from
(2) join
(3) on
(4) where
(5) group by(開始使用select中的別名,後面的語句中都可以使用)
(6) avg,sum……(聚合函數)
(7) having
(8) select
(9) distinct
(10) order by
(11) limit
SELECT語句執行順序
開始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最終結果
每執行一步,就會在內存或者間接存儲(臨時文件)中,產生一個邏輯表(中間結果),供接下來的子句使用,如果不存在某個子句,就跳過 。
更多文檔
https://www.cnblogs.com/clsn/p/8047028.html#auto_id_14
https://www.cnblogs.com/yyjie/p/7788428.html
sql執行順序