1. 程式人生 > >把資料庫表中某幾列值相同的行去重,只保留一行

把資料庫表中某幾列值相同的行去重,只保留一行

使用分析函式row_number() over (partition by … order by …)來進行分組編號,然後取分組標號值為1的記錄即可。目前主流的資料庫都有支援分析函式,很好用。

其中,partition by 是指定按哪些欄位進行分組,這些欄位值相同的記錄將在一起編號;order by則是指定在同一組中進行編號時是按照怎樣的順序。

示例(SQL Server 2005或以上適用):

select s.*  
from ( 
    select *, row_number() over (partition by [列名1],[列名2] order by [列名]) as group_idx  
    from table_name
) s
where s.group_idx = 1