我有sql表但是,有些值多次添加,我需要删除其中一个。你能给我一个简单的问题吗?
答案 0 :(得分:7)
来自here。如果您还没有唯一标识每一行的“ID”字段,则需要创建一个用于此操作的字段(完成后您可以随时删除该列):
DELETE
FROM MyTable
WHERE ID NOT IN
(
SELECT MAX(ID)
FROM MyTable
GROUP BY DuplicateColumn1, DuplicateColumn2, DuplicateColumn2)
另外,在这个网站上搜索“删除重复的行sql server”,你会发现这个问题已在这里多次回答。
答案 1 :(得分:2)
DECLARE @Duplicates TABLE (AValue VARCHAR(32))
INSERT INTO @Duplicates VALUES ('No Duplicate')
INSERT INTO @Duplicates VALUES ('Duplicate')
INSERT INTO @Duplicates VALUES ('Duplicate')
SELECT ID = IDENTITY(INT, 1, 1), *
INTO #Duplicates
FROM @Duplicates
DELETE FROM #Duplicates
FROM #Duplicates d
INNER JOIN (
SELECT ID = MIN(ID)
FROM #Duplicates
GROUP BY AValue
HAVING COUNT(*) > 1
) id ON id.ID = d.ID
DELETE FROM @Duplicates
INSERT INTO @Duplicates
SELECT AValue FROM #Duplicates
DROP TABLE #Duplicates
SELECT * FROM @Duplicates
答案 2 :(得分:1)
;WITH tempTable AS
(
SELECT ROW_NUMBER() OVER (PARTITION BY Column1 ORDER BY Column2 ) AS rownumber,*
FROM @Table
)
DELETE FROM tempTable WHERE rownumber > 1
这是从其中一个答案中提到的文章链接中获取的,但仅仅是为了在将来的某个时间保存某人..
答案 3 :(得分:0)
使用:
设置RowCount 1
然后运行你的删除sql
这将删除1行,无论是否有多行匹配。
然后关闭查询窗口,或使用 设置RowCount 0以重置它。
答案 4 :(得分:0)
不要忘记: