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.