Sql 根据条件删除重复行
我有一个具有ID和EventDate的表。当我使用两个表的并集时,它有重复的行。现在我得到了具有最小Eventdate的行,并删除了其他重复的行 这张桌子是给我的 身份证日期 -- | -- 1 | 10/27/1993 1 | 10/27/1994 2 | 10/17/1993 2 | 1993年8月15日 根据条件删除重复行您可以使用行编号: 您可以使用行号: 用这个Sql 根据条件删除重复行,sql,sql-server,database,Sql,Sql Server,Database,我有一个具有ID和EventDate的表。当我使用两个表的并集时,它有重复的行。现在我得到了具有最小Eventdate的行,并删除了其他重复的行 这张桌子是给我的 身份证日期 -- | -- 1 | 10/27/1993 1 | 10/27/1994 2 | 10/17/1993 2 | 1993年8月15日 根据条件删除重复行您可以使用行编号: 您可以使用行号: 用这个 delete A ( SELECT *,
delete A
(
SELECT *,
RN = ROW_NUMBER() OVER(PARTITION BY [COLUMN] ORDER BY EventDate ASC),*
FROM dbo.Your_Table
) AS A
where rn > 1
用这个
delete A
(
SELECT *,
RN = ROW_NUMBER() OVER(PARTITION BY [COLUMN] ORDER BY EventDate ASC),*
FROM dbo.Your_Table
) AS A
where rn > 1
就像我们谈论MySQL一样,您不能从表中删除,而在子查询中从同一个表中选择
所以
其中table1是原始表。就像我们谈论MySQL一样,您不能从表中删除,而从子查询中的同一个表中选择
所以
表1是原始表。如果我们谈论Firebird,就足够了
DELETE FROM table1 t1_1
WHERE EXISTS(
SELECT t1_2.id FROM table1 t1_2 WHERE t1_1.EventDate>t1_2.EventDate
);
如果我们谈论火鸟,就足够了
DELETE FROM table1 t1_1
WHERE EXISTS(
SELECT t1_2.id FROM table1 t1_2 WHERE t1_1.EventDate>t1_2.EventDate
);
请添加一些示例顺便问一下,您使用的是哪种数据库引擎MySQL、Firebird等?顺便问一下,我使用的是sqlserver@venoelI,我认为仅仅使用groupby函数就可以了。请添加一些示例顺便问一下,您使用的是哪种数据库引擎MySQL、Firebird、,等等?顺便说一下,我使用sqlserver@venoelI认为仅仅使用groupby函数workedCTE是不够的from@JohnHC你在说什么;。谢谢你的提醒from@JohnHC你在说什么;。谢谢你的提示,行号有什么帮助?这会删除整个表格我不想基于行号@FabianoCarvalho删除行号有什么帮助?这会删除整个表格我不想基于行号@FabianoCarvalho删除