skillup

技術ブログ

Database

複数GROUP BYでの注意

投稿日:

GROUP BYしたときに件数が増えるという現象があったので一応メモ。というか当たり前のことですが・・・

たとえば以下のようなテーブルがあったとします。

student

id student_name
1 ヤマダ
2 スズキ

club

id club_name
100 野球
200 サッカー
300 バスケ

student_club

student_id club_id
1 100
1 200
2 200
2 300

所属しているクラブの情報を出すには以下のSQLで出せます。

ここで生徒のidでgroupbyすると当然生徒単位になります。

気を付けないといけいないのですが、クラブ名がでることです。このクラブ名は当然ただしくないので注意しましょう。

ここで、生徒とクラブごとにgroupbyすると件数が増えます。他のキーがあれば当然件数が増えます。

当たり前のことなんですが、データが多かったり、テーブル構造が複雑だったりすると発見に時間がかかることが多いです。

-Database
-

執筆者:


comment

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

関連記事

no image

正規化のデメリット

Contents1 正規化のデメリット2 本日のSQL 正規化のデメリット 正規化についていろいろ書いてきましたが、メリットもあればデメリットもあります。 メリットとしては データの不整合が起きにくい …

no image

MySQLでのlocalhostと127.0.0.1の違い

たまにMySQLでローカルのホストに接続する時に、localhostで接続するときと127.0.0.1で接続するときで挙動が違う(片方だとエラーになり、もう片方だとエラーにならない)などがあるのでちょ …

no image

SQLのチューニングに関して

ここ2か月ぐらいはSQLの本でがりがり勉強してきましたね。当然復習も必要かと思いますが、だいぶいろんなことを覚えたなあという気がします。 一番勉強になった本はもちろん「達人に学ぶ SQL徹底指南書」と …

no image

データベース設計のアンチパターン 重すぎるOLTP+Date型不統一+データ量想定が甘い

Contents1 重すぎるOLTP1.1 デメリット1.2 対策2 DATE型の型の不統一2.1 デメリット2.2 対策3 データ量の想定が甘い3.1 デメリット3.2 対策 重すぎるOLTP ※O …

no image

ユニークキーの設定

MySQLでのユニークキーの設定に関して。 ユニークキーの設定は下記の通り。

ユニークキーを作成した後に確認するのは下記コマンドで。 …