ホームページ > データベース > mysql チュートリアル > SQLでパーティション化されたグループ内に連続した行番号を割り当てる方法は?

SQLでパーティション化されたグループ内に連続した行番号を割り当てる方法は?

DDD
リリース: 2024-12-22 12:27:15
オリジナル
696 人が閲覧しました

How to Assign Sequential Row Numbers Within Partitioned Groups in SQL?

SQL のパーティション化されたグループ内の行に連続した番号を付ける

質問:

どのように割り当てることができますか特定の属性をパーティション化として使用する、SQL テーブル内の各キー グループ内の連続する行番号要素?

キー グループによるパーティション化:

目的は、指定されたキー列または列の組み合わせの一意の値ごとに行番号を順番にインクリメントすることです。たとえば、テーブルに (CODE, NAME) のタプルが含まれている場合、以下に示すように、同じ CODE 値を持つ行に連続番号を割り当てる必要があります。

元のテーブル:

CODE NAME
A Apple
A Angel
A Arizona
B Bravo
C Charlie
C Cat
D Dog
D Doppler
D Data
D Down

連続行番号でパーティション化された望ましい結果コード:

CODE C_NO NAME
A 0 Apple
A 1 Angel
A 2 Arizona
B 0 Bravo
C 1 Charlie
C 0 Cat
D 0 Dog
D 1 Data
D 2 Down
D 3 Doppler

実装:

複数の SQL 言語が ROW_NUMBER() OVER () 分析関数を通じてこの機能をサポートしています:

SQLサーバー:

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

Oracle:

SELECT
    CODE,
    RANK() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable
ログイン後にコピー

位置tgres:

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

Sybase:

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

MySQL 8.0 :

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

MariaDB 10.2 :

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

SQLite 3.25 :

SELECT
    CODE,
    ROW_NUMBER() OVER (PARTITION BY CODE ORDER BY NAME) - 1 As C_NO,
    NAME
FROM
    MyTable
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

これらのクエリを使用すると、次のことができます。 SQL テーブルの各キー グループ内で連続した行番号を効果的に割り当てます。

以上がSQLでパーティション化されたグループ内に連続した行番号を割り当てる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート