執行順序(SQL)
執行順序
完整查詢
code:sql
SELECT DISTINCT column, AGG_FUNC(column_or_expression), …
FROM mytable
JOIN another_table
ON mytable.column = another_table.column
WHERE constraint_expression
GROUP BY column
HAVING constraint_expression
ORDER BY column ASC/DESC
LIMIT count OFFSET COUNT;
2019-10-03 SQL queries don't start with SELECT
1. FROM&JOIN
決定要查詢的完整工作資料集
2. WHERE
首先套用第一層的WHERE條件
只能存取FROM指定的欄位,SELECT定義的別名在此無法使用
3. GROUP BY
通過WHERE條件後留下的資料列,依照此處子句進行分組
只會保留與該欄位唯一值數量相同的資料列
4. HAVING
如果查詢包含GROUP BY子句,就會再套用HAVING條件到已分組的資料列
和WHERE一樣,SELECT定義的別名在此無法使用
5. SELECT
之後計算SELECT區段中的運算式和欄位內容
6. DISTINCT
剩餘的資料列,若有指定DISTINCT會移除重複資料列
7. ORDER BY
依照指定欄位,以遞增/遞減方式排序
SELECT運算式已經完成,定義的別名在此可以使用
8. LIMIT/OFFSET
超出LIMIT與OFFSET指定範圍的資料列會被捨棄
https://www.youtube.com/watch?v=BHwzDmr6d7s