在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中文網其他相關文章!