GROUP BY
と ORDER BY
MySQL の GROUP BY
句と ORDER BY
句は、データの集約と整理に不可欠です。 ただし、それらを組み合わせる場合は、予期しない結果を避けるために慎重に検討する必要があります。
GROUP BY
クエリでの非集計列の処理
SELECT
クエリの GROUP BY
リストに非集計列を含めると、一貫性のない結果が生じる可能性があります。 MySQL は通常、各グループの最初の行から値を選択しますが、グループ内の値が異なる場合は任意です。
ソリューション: サブクエリと ANY_VALUE()
この不確実性は、サブクエリを使用して対処できます。 各グループ内のデータを事前に並べ替えることにより、サブクエリは一貫した値を確実に選択します。
代わりに、ANY_VALUE()
関数 (MySQL 5.7 以降で利用可能) を使用すると、不確定性の問題を回避して、各グループ内の非集計列から単一の値を取得できます。
ONLY_FULL_GROUP_BY
モード
MySQL 5.7.5 以降のバージョンは、デフォルトで ONLY_FULL_GROUP_BY
モードになります。これにより、SELECT
リスト内のすべての非集計列も GROUP BY
句に含める必要があります。 違反するとエラーが発生します。 ANY_VALUE()
または集計関数 (SUM()
など) は、コンプライアンスに必要です。
以上が予期しない結果を避けるために、MySQL の「GROUP BY」句と「ORDER BY」句を適切に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。