Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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 server 删除第一列中具有重复项的行,并仅在第二列中保留具有最新日期的行_Sql Server - Fatal编程技术网

Sql server 删除第一列中具有重复项的行,并仅在第二列中保留具有最新日期的行

Sql server 删除第一列中具有重复项的行,并仅在第二列中保留具有最新日期的行,sql-server,Sql Server,我有一个记录如下的表格: ID column1 column2 column3 1 23566 2016-03-12 2016-03-24 2 23566 2016-05-11 2016-06-14 3 24532 2016-01-02 2016-01-04 我想删除第一列中具有重复值的行,并只在第二列中保留具有最新日期的行。 像这样: 您可以使用行号获取副本并删除 ;WITH cte AS (SELECT *, ROW_NUMB

我有一个记录如下的表格:

ID  column1  column2     column3
1   23566    2016-03-12  2016-03-24
2   23566    2016-05-11  2016-06-14
3   24532    2016-01-02  2016-01-04
我想删除第一列中具有重复值的行,并只在第二列中保留具有最新日期的行。 像这样:


您可以使用行号获取副本并删除

;WITH cte
AS (SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY id ORDER BY date DESC) rn
FROM yourtable)
DELETE FROM cte
WHERE rn > 1

您可以使用行号获取副本并删除

;WITH cte
AS (SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY id ORDER BY date DESC) rn
FROM yourtable)
DELETE FROM cte
WHERE rn > 1

您可以使用带有
行号的CTE

WITH CTE AS
(
   SELECT t.*, RN = ROW_NUMBER() OVER (PARTITION BY Col1 ORDER BY Col2 DESC)
   FROM dbo.TableName t
)
DELETE FROM CTE WHERE RN > 1

如果您想知道要删除的内容,请将
delete
更改为
选择*
您可以使用带有
行号的CTE

WITH CTE AS
(
   SELECT t.*, RN = ROW_NUMBER() OVER (PARTITION BY Col1 ORDER BY Col2 DESC)
   FROM dbo.TableName t
)
DELETE FROM CTE WHERE RN > 1

如果您想知道要删除的内容,请将
delete
更改为
选择*

,您可以使用带有行号的cte,然后删除行号>1的位置。如果你能提供一些关于你的表的详细信息,我可以告诉你我的意思。你可以使用一个行号为的cte,然后删除行号大于1的cte。如果你能提供一些关于你的桌子的细节,我可以告诉你我的意思。你更快了+1你跑得更快+1.