集計関数を使用しない MySQL GROUP BY
句の非決定的な動作
GROUP BY
句に集計関数を使用せずに MySQL クエリで SELECT
句を使用すると、その動作が非決定的になる可能性があります。これは、MySQL ではパフォーマンス上の理由から GROUP BY
句から列を省略できるためです。
ただし、この省略は、省略された列の値が各グループ内のすべての行で同じである場合にのみ機能します。そうでない場合は、例に示すように、サーバーはグループ内の任意の値を自由に選択できます。その結果、戻り値は不定になります。
予測可能な結果を保証するには、集計されていないすべての列を GROUP BY
句に含めることをお勧めします。さらに、テーブル内のすべての列を選択するために *
ワイルドカード文字を使用することは、同様の状況で予期しない動作を引き起こす可能性があるため、一般的に推奨されません。
MySQL のドキュメントには、「この機能を使用する場合、各グループのすべての行は、GROUP BY
セクションから省略された列の値が同じである必要があります。この条件が満たされない場合、クエリ結果は未定義になります。」と明記されています。 。
したがって、GROUP BY
句に含まれる列を慎重に検討し、グループ内で異なる値を含む列を省略しないようにしてください。
以上が集計関数がないと MySQL の GROUP BY の動作が予測できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。