skillup

技術ブログ

Database

SQLにおけるナンバリング

投稿日:

本日はナンバリングに関して。

MySQLを使っていますと各テーブルにはid int not null auto_increment primary keyなどと打って主キーを打つことがほぼ習慣になっておりましたが、これは比較的新しい考え方のようです。

主キーが1列の場合

テーブル名member カラムはmember_no,nameだと仮定します。

全てのレコードに対して通し番号での連番を振る場合です。

ウインドウ関数を使う場合

サブクエリで通し番号を取る場合

主キーが複数列から構成されている場合(※通し番号)

テーブルサンプル(score)

class | member_no | point
——-+———–+——-
1 | 100 | 50
1 | 101 | 55
1 | 102 | 56
2 | 100 | 60
2 | 101 | 72
2 | 102 | 73
2 | 103 | 73

ウインドウ関数

 サブクエリ

グループごとに通し番号

ウィンドウ関数

サブクエリ

ちなみにこれらを利用してUPDATE文を作成し、シーケンス的なidを作成することができます。

-Database

執筆者:


comment

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

関連記事

no image

persistence.xmlのプロパティについて

JavaEEではデータベースとの設定情報はpersistence.xmlに記述します。 (ユーザー名、パスワード、ポート、driver名、データベース名などの情報はglassfish-resource …

no image

アンチパターン バインド変数の未使用+直積組み合わせ+データ量爆発+インデックス関連

本日はSQLコーディングに関して。 ここら辺は実際にプログラムを書く際に重要になってくるネタ。 Contents1 バインド変数1.1 デメリット1.2 対策2 直積により組み合わせが爆発する2.1 …

no image

正規化について&EXTRACT

Contents1 正規化とは?2 第一正規化3 SQLネタ EXTRACT 正規化とは? 正確な定義は難しいですが、8割ぐらいあっている定義としては「適切なテーブルに分割すること」です。※ただし正確 …

no image

サブクエリ 応用編

本日も引き続きサブクエリです。 前回とちょっと近いですが、下記のような歯抜けのテーブル(sales2)があるとします。 year | sale ——+—&#8212 …

no image

MySQLのLIMIT,OFFSETに関して&explainの見方など

自作のWEBアプリを作っていたところSELECT句が異常に遅いケースがありました。 発見までにかなり時間がかかったんですが、不可思議な現象としてはOFFSETが小さいときと大きいときで検索スピードが全 …