レベルエンター山本大のブログ

面白いプログラミング教育を若い人たちに

BLOCKVROCKリファレンス目次はこちら

MySQLで Group By 節に含まれないカラムをSelect句で表示するとmin(カラム)と同じ結果になる。

Group By 節に含まれないカラムをSelect句で表示するとmin(カラム)と同じ結果になる。

MySQLのリファレンス「■6.3.7.3. 非表示のフィールドに対する GROUP BY」より



MySQL では GROUP BY の使用を拡張しています。GROUP BY 部分にないカラムや計算を SELECT 式で使用することができます。これは、そのグループの使用可能なあらゆる値を表します。この機能により、不要項目に対するソートやグループ化を行わないことで、パフォーマンスを向上させることができます。たとえば、次のクエリの場合、customer.name をグループ化する必要はありません。

<span style="color:#000000"><p>mysql> SELECT order.custid,customer.name,MAX(payments)
    ->        FROM order,customer
    ->        WHERE order.custid = customer.custid
    ->        GROUP BY order.custid;</p></span>

標準 SQL では、customer.name を GROUP BY 節に組み込む必要があります。MySQL では、非 ANSI モードでの実行時にはこのカラム名は不要です。