SQL では、GROUP BY 句を使用して、1 つ以上の列に基づいてデータをグループ化し、集計結果を取得できます。ただし、MySQL と PostgreSQL でこの句を使用すると、異なる動作が発生する可能性があり、PostgreSQL では「列 'the_table.col3' は GROUP BY 句に表示されるか、集計関数として使用される必要があります」というエラーが発生します。
MIN()、MAX()、COUNT()、SUM() などの集計関数を使用すると、複数の値を 1 つの結果に結合できます。これらの関数は、各グループの要約統計を計算するために、GROUP BY 句とともによく使用されます。
MySQL では、GROUP BY ルールの緩和された解釈が許可されており、非集計カラムが GROUP BY 句に含まれていない場合でも選択リストに表示されることが許可されています。 MySQL は各グループの値を任意に選択できるため、この動作により未定義の値が発生する可能性があります。
対照的に、PostgreSQL は SQL 標準に厳密に従っています。 GROUP BY 句を使用する場合は、選択リスト内のすべての非集計列を GROUP BY 句に含めるか、集計関数で使用する必要があります。
PostgreSQL のエラーを解決するには、集計関数を使用して、各グループ化列の概要統計を計算する必要があります。たとえば、次のクエリを使用できます:
<code class="language-sql">SELECT col2, MIN(col3) AS col3, MIN(col1) AS col1 FROM the_table GROUP BY col2;</code>
MySQL のアプローチは柔軟性を提供しますが、値が未定義になる可能性があります。 PostgreSQL では SQL 標準が厳格に適用されているため、集計結果の一貫性と予測可能性が確保されています。 PostgreSQL で GROUP BY 句を使用する場合、ベスト プラクティスは常に、GROUP BY 句に非集計列を含めるか、集計関数を使用することです。
以上がMySQL と PostgreSQL GROUP BY: 「GROUP BY 句に出現する必要があります」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。