This is my table structure
Name Age
 Siva 24
 Siva 24
 Raghu 25
In this above table siva 24 row is inserted twice . how to delete duplicate record .
If you use SQL Server 2005 the following query will help you..
WITH MYTABLE as (select *, Row_Number() over (order by Name,age) RowId from names)
 Delete from MyTable Where Rowid Not in(Select Min(rowId) from MyTable Group By Name,Age); 
If you use SQL Server 2000 you should have minimum one unique column (id) to remove the duplicates.
|||One way (that works with both SQL 2000 and SQL 2005) is to create a new table, add the non-duplicate data to the new table, then drop the old table and rename the new table to the same name as the old table.
Here is a demonstration:
Code Snippet
SET NOCOUNT ON
CREATE TABLE MyTable 
 ( [Name] varchar(25),
 [Age] int
 )
GO
INSERT INTO MyTable VALUES ( 'Siva', 24 )
INSERT INTO MyTable VALUES ( 'Siva', 24 )
INSERT INTO MyTable VALUES ( 'Raghu', 25 )
SELECT * 
FROM MyTable
CREATE TABLE MyNewTable
 ( [Name] varchar(25),
 [Age] int
 )
GO
INSERT INTO MyNewTable
 SELECT 
 [Name],
 [Age]
 FROM MyTable
 GROUP BY 
 [Name],
 [Age]
SELECT *
FROM MyNewTable
DROP TABLE MyTable
GO
EXECUTE sp_rename 'MyNewTable', 'MyTable'
SELECT *
FROM MyTable
In this case we can simply use,
Code Snippet
Select Distinct Name, Age Into MyNewTable From MyTable;
Truncate Table MyTable;
Insert Into MyTable Select * From MyNewTable;
Drop Table MyNewTable;
 
No comments:
Post a Comment