SQL でのカウントベースの番号付けを使用した行のレプリケーション
SQL では、出現頻度が異なるデータを管理するのが困難な場合があります。この質問では、指定された数に基づいて行を繰り返し、結果の行に数値インデックスを割り当てる方法について説明します。
データベースに依存しないソリューション
数値テーブルを使用すると、Oracle、SQL Server、MySQL などのさまざまなデータベース プラットフォーム間でカウント値に基づいて行をレプリケートできます。 PostgreSQL.
SELECT value, COUNT, number FROM table JOIN Numbers ON table.COUNT >= Numbers.number
説明
数値テーブルは、連続する数値 (1、2、3 など) を含む静的なテーブルです。 「COUNT >= 数値」という条件でメイン テーブルと数値テーブルを結合することにより、数値テーブル内の使用可能な数値以上のカウントを持つ値の行を複製します。
例
次のテーブル データを考えてみましょう:
value | count |
---|---|
foo | 1 |
bar | 3 |
baz | 2 |
クエリを適用すると、結果は次の出力になります:
value | count | number |
---|---|---|
foo | 1 | 1 |
bar | 3 | 1 |
bar | 3 | 2 |
bar | 3 | 3 |
baz | 2 | 1 |
baz | 2 | 2 |
この結果では、カウント 3 の「bar」の行が対応するインデックス 1、2、3 で 3 回繰り返されますが、「foo」の行は" はカウントが 1 なので 1 回だけ表示されます。
以上がカウントに基づいて SQL 行をレプリケートし、連番を割り当てるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。