Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果前一行在特定列中具有相同的值,如何删除该行_Sql_Sql Server 2005 - Fatal编程技术网

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);