非表示のフィールドに対する GROUP BY

俺が苦手な書式は、こんな感じの構文。

mysql> SELECT t1.custid,t2.name,count(*)
    ->        FROM order as t1, customer as t2
    ->        WHERE t1.custid = t2.custid
    ->        GROUP BY t1.custid;

いまいちイメージを掴みづらいんだけど、
もうこれはパターンとして覚えていた方がいいかも。
count(*)はGROUP BY関数の一つなので、こういう風にcount(*)を使う時は、
GROUP BYがセットされていないとダメ(はずすと構文エラーになります)。
ちなみにこれは、MySQLの拡張書式でSQL標準ではないらしい。
SQL標準だと、GROUP BY句にt2.nameを組み込む必要があるらしい。
詳しくは公式で。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です