sql >> データベース >  >> RDS >> Mysql

サブクエリを使用せずにMySQLでGROUPBYよりもORDERBYを優先する

    定義上、ORDERBYは後に処理されます GROUPBYを使用したグループ化。定義上、SELECTステートメントが処理される概念的な方法は次のとおりです。

    1. FROM句で参照されているすべてのテーブルのデカルト積を計算します
    2. FROM句の結合基準を適用して、結果をフィルタリングします
    3. WHERE句にフィルター基準を適用して、結果をさらにフィルター処理します
    4. GROUP BY句に基づいて結果をサブセットにグループ化し、そのようなサブセットごとに結果を1つの行にまとめ、集計関数の値を計算します-SUM()MAX()AVG() 、など-そのようなサブセットごとに。 GROUP BY句が指定されていない場合、結果は単一のサブセットがあるかのように扱われ、集計関数は結果セット全体に適用され、単一の行に折りたたまれます。
    5. HAVING句に基づいてグループ化された結果をフィルタリングします。
    6. ORDERBY句に基づいて結果を並べ替えます。

    もちろん、GROUPBY句を含むSELECTの結果セットで許可される列は

    だけです。
    • GROUPBY句で参照される列
    • 集計関数(MAX()など )
    • リテラル/定数
    • 上記のいずれかに由来する表現。

    壊れたSQL実装のみが、select xxx,yyy,a,b,c FROM foo GROUP BY xxx,yyyのようなものを許可します —個々のグループが単一の行に折りたたまれていることを考えると、列a、b、およびcへの参照は無意味/未定義です。



    1. 複数のスレッドから同時にMySQLにアクセスする方法

    2. WAMP仮想ホストが機能しない

    3. 2つのフィールドが存在する場合は更新し、存在しない場合は挿入します(MySQL)

    4. MayBeSQLがMicrosoftAccessに登場!