Sql 如果前一行在特定列中具有相同的值,如何删除该行
假设我有一张桌子,看起来像这样:Sql 如果前一行在特定列中具有相同的值,如何删除该行,sql,sql-server-2005,Sql,Sql Server 2005,假设我有一张桌子,看起来像这样: ------------------------------- id|column2|column3 |column4 ------------------------------- 1 value1 somevalue somevalue 2 value2 somevalue somevalue 3 value2 somevalue somevalue <----- I want this column deleted 4 val
-------------------------------
id|column2|column3 |column4
-------------------------------
1 value1 somevalue somevalue
2 value2 somevalue somevalue
3 value2 somevalue somevalue <----- I want this column deleted
4 value3 somevalue somevalue
-------------------------------
id |第2列|第3列|第4列
-------------------------------
1 value 1 somevalue somevalue
2 value 2 somevalue somevalue
3 value 2 somevalue somevalue
或者,如果需要按一个字段比较行
DELETE FROM Table t1
WHERE EXISTS (SELECT 1 from Table t2
WHERE t1.Column2 = t2.Column2
AND t2.Id > t1.Id)
我想试试这样的东西
DELETE FROM Table t1
WHERE EXISTS (SELECT 1 from Table t2
WHERE t1.Column2 = t2.Column2
AND t2.Id + 1 = t1.Id)
对于您的特定查询,我将使用t2.Id+1=t1.Id
而不是t2.Id
,因为这将删除任何事件,而不仅仅是连续条目
delete from table_name where rowid in(
select a.rowid
from (
select rowid,
row_number() over (partition by column_name_having_duplicates order by column_name_having_duplicates)rnk
from table_name a
)a
where a.rnk>1);
delete from table_name where rowid in(
select a.rowid
from (
select rowid,
row_number() over (partition by column_name_having_duplicates order by column_name_having_duplicates)rnk
from table_name a
)a
where a.rnk>1);