SQL-取行號、刪除作業

SQL-取行號、刪除作業

之前有寫過取行號的「T-SQL」,

不過這次不想用SP、Trigger,於是改用「ROW_NUMBER()」,

只是要注意key值是否重覆。


insert into Dtable (Did) 
select convert(nvarchar,Sid)+'-'+convert(nvarchar,ROW_NUMBER() OVER (ORDER BY Sid)) AS 'RowNumber'
from Stable

 

為了省事(偷懶XD~)

在處理重覆資料,我們是直接全砍再新增,

而有趣的事情就發生了,

因為我們在刪除是直接用「ROW_NUMBER()」當條件,

只會刪除第一筆跟最後一筆,

所以把刪除的條件先寫到「SQL」暫時Table,

由暫時Table下條件去刪除,

最後在「drop table  #tmp」


select convert(nvarchar,Sid)+'-'+convert(nvarchar,ROW_NUMBER() OVER (ORDER BY Sid)) AS 'RowNumber' 
into #tmp 
from Stable

delete Dtable
where rtrim(Did) in 
(select RowNumber from #tmp)

drop table  #tmp

 

自我LV~