クエリにgroupby句とorderby句の両方がある場合、実行の後にSQLが続くシーケンスはどうなりますか。それはクエリ内の彼らの位置に依存しますか?
8 に答える
ORDER BY
によって実行されたグループ化の結果に対して常に実行されますGROUP BY
。つまり、常に「後」に実行されます。標準SQLでは、両方が存在する場合は、事実を「思い出させる」ために、ORDER BY
字句的に後を指定する必要があります。GROUP BY
順番に:
FROM & JOIN s 行を決定してフィルター処理する
WHERE行にフィルターを追加する
GROUP BYこれらの行をグループに結合する
HAVINGフィルター グループ
ORDER BY残りの行/グループを配置する
それはあなたが使用しているRDMSを含む多くのものに依存します。何が起こっているかを知る最良の方法は、クエリ実行プランを確認できるクエリツールを使用することです。
通常、注文は最後に行われます。
SQL Serverを使用している場合は、クエリアナライザーを起動すると、実行プランによってクエリの優れたグラフィック表現が得られます。
実行の順序は、SQL ステートメントによって強制されません。義務付けられているのは、結果が「正規の」評価によって得られる結果と一致することです。標準的な評価では、ORDER BY は最後に適用されますが (SELECT リスト式が評価された後でも)、実際のシステムでのクエリの実際の実行において、並べ替えがその時点まで延期されるわけではありません。
group byが最初に実行され、次にグループの結果が並べ替えられます。
SQL クエリがあるとします。
SELECT ...
FROM ...
WHERE ...
GROUP BY ...
HAVING ...
ORDER BY ...
SQL クエリのサブ句が実行される順序は次のとおりです。
1. FROM clause
2. WHERE clause
3. GROUP BY clause
4. HAVING clause
5. SELECT clause
6. ORDER BY clause