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

論理設計のグレーノウハウ サロゲートキー

前回まではアンチパターンやバッドノウハウについて学習してきましたが、今回はグレーノウハウについて特集します。 グレーノウハウとは読んで字のごとくホワイトともブラックとも言えないという手法ですね。 つま …

no image

Postgresメモ(データベース、スキーマ、他pgadminなど)

postgresをちょこちょこ触っており、超基礎的な事に関してMySQLでは触れられていないネタなどについて。 以前のリンク Postgresの基礎(主にMySQLとの違いなど) Contents1 …

no image

slow-query-logについて

データベースを伴う部分でののチューニングですが、大きく分けると SQLを書き直す インデックスを張りなおす プログラム内部でキャッシュを有効化する 設定ファイルの修正 上記のようなかんじになるのではな …

no image

Postgres リモートホストからの接続他

今まで使ってきたデータベースはMySQLがほとんどなのですが、最近少し、Postgresを触っています。 今回はパスワードの設定とリモートからの接続など。 Contents1 postgresへのログ …

no image

アンチパターン 参照渡しと値渡し+キー情報の設定+同一値を複数テーブルに配置+正規化が不十分+集計表+不適切なステータス値

本日は自分がデータベースの設計をしていて気を付かないといけないなーと思った点などを。 注意点としては設計のミスは実装で取り返しにくいことが多いので極力気を付けましょう。あといろいろなテーブルのパターン …