我已經研究了它,而我發現的最實用的方法是創建一個過程。程序
添加一個id,刪除重複的行,並最終將一個id列添加到新形成的表。我想知道,必須有一個更簡單的方法。下面的代碼,它的工作原理...如何刪除重複(重複)記錄,從表中沒有編號的行
- 我的表
create table dublicateTable
(
name varchar(30)
)
--duplicatedly插入的行
insert into dublicateTable values('Kerem')
insert into dublicateTable values('Taner')
insert into dublicateTable values('Mehmet')
insert into dublicateTable values('Serhat')
--first情況
select * from dublicateTable
name
-----
Kerem
Kerem
Kerem
Taner
Taner
Mehmet
Mehmet
Mehmet
Mehmet
Serhat
Serhat
Serhat
--dynamicaly形成sql代碼程序
USE [myDataBase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create procedure [dbo].[usp_delete_duplicate]
as
declare
@add_id_text nvarchar(50),
@delete_id_text nvarchar(50),
@command_text nvarchar(100)
begin
set @add_id_text='alter table dbo.dublicateTable add id int identity(1,1)'
set @command_text='delete from dbo.dublicateTable where id not in(select min(id) from dbo.dublicateTable group by name)'
set @delete_id_text='alter table dbo.dublicateTable drop column id'
exec sp_executesql @add_id_text
exec sp_executesql @command_text
exec sp_executesql @delete_id_text
exec sp_executesql @add_id_text
end
--final situation.it工程..
exec usp_delete_duplicate
select id,name from dublicateTable
id name
--- ----
1 Kerem
2 Taner
3 Mehmet
4 Serhat
是的但不同的觀點 –