在 SQL 中,關鍵字的執行順序通常如下:
- FROM:確定要查詢的表或數據源,并執行表之間的連接操作(如 INNER JOIN、LEFT JOIN 等)。FROM 子句執行順序為從后往前、從右到左。
- ON:應用連接條件,用于在連接操作時篩選連接的行。
- WHERE:基于指定的條件對記錄行進行篩選。
- GROUP BY:將數據按照指定的列進行分組。
- HAVING:對分組后的數據進行篩選,通常與聚合函數一起使用。
- SELECT:選擇要檢索的列,可以使用聚合函數進行計算,也包括 DISTINCT 去重等操作。窗口函數是在 SELECT 語句里執行,而 SELECT 是在 WHERE 和 GROUP BY 之后執行。
- UNION:如果存在多個 SELECT 查詢并使用了 UNION 操作符,會重復執行上述步驟 1 到 6,生成多個虛擬表,然后將這些虛擬表合并。
- ORDER BY:對結果集按照指定的列進行排序。
- LIMIT:限制結果集返回的行數? ?
需要注意的是,不同的數據庫管理系統可能會有一些細微的差別,但總體執行順序是相似的。
例如:
SELECT column1, SUM(column2) AS total
FROM table1
JOIN table2 ON table1.column_id = table2.column_id
WHERE condition1
GROUP BY column1
HAVING SUM(column2) > 100
ORDER BY total DESC;