ホームページ >データベース >mysql チュートリアル >SQL 結果行を複製し、カウント列に基づいて行番号を割り当てるにはどうすればよいですか?
SQL で行番号を付けて結果行を複製する
多くのデータベース操作では、多くの場合、結果行を展開して一意の番号を割り当てることが必要になります。彼ら。この手法は、行数が異なるデータを扱う場合に特に役立ちます。たとえば、次のデータについて考えてみましょう。
value | count ------+------ foo | 1 bar | 3 baz | 2
このデータを、カウントが 1 より大きい行が繰り返され、各行にインデックスが割り当てられる形式に変換するには、いくつかのアプローチを取ることができます。
数値テーブルの使用
一般的な解決策は、数値テーブルとの結合演算を利用することです。このテーブルには、目的のインデックス作成に使用できる一連の数値が含まれています。
SELECT value, count, number FROM table JOIN Numbers ON table.count >= Numbers.number
このメソッドは、Oracle、SQL Server、MySQL、PostgreSQL など、すべての主要なデータベースに対して目的の出力を生成します。
実装例 (SQL Server)
WITH N AS (SELECT ROW_NUMBER() OVER (ORDER BY object_id) AS number FROM sys.objects) SELECT value, count, number FROM table JOIN N ON table.count >= N.number;
これは変更されましたクエリは、「N」という名前の共通テーブル式 (CTE) を利用して数値テーブルを作成し、目的の出力を実現します。
データベース固有の考慮事項
上記の解決策ではありますが、はデータベース間の互換性がありますが、追加の最適化やパフォーマンス上の利点を提供する、よりデータベース固有のアプローチが存在する可能性があります。特定のデータベース環境については、そのようなオプションを検討することをお勧めします。
以上がSQL 結果行を複製し、カウント列に基づいて行番号を割り当てるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。