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~