如何删除符合条件的记录并留下一个?

时间:2016-02-01 07:40:51

标签: sql sql-server sql-server-2008-r2

我有一个存储过程,我想要删除所有记录,但是匹配某个条件的记录。我似乎无法弄明白。

我有以下临时表:

/proc/cpuinfo

然后我有代码在该表中插入数据。基本上,记录看起来像这样:

PROCESSOR_ARCHITECTURE

之后,我想:

CREATE TABLE #TEMP_RESULTS(
    code NVARCHAR(50),
    newCode NVARCHAR(50),
    result NVARCHAR(10)
)

编辑:忘记提及,在互联网上搜索,但大部分主题都是关于删除重复项或选择TOP记录。

EDIT2 :这是所需的输出:

code  newCode   result
A1      B1       <15
A1      B2       <20
A1      B3       <30 -- in this case one of the three A1s should stay in the table
A2      B4        25 -- this is staying
A2      B5       <45
A3      B6       <22

这样做了,因为稍后我想将结果更新为其他内容。没有约束,也没有分组。

1 个答案:

答案 0 :(得分:1)

尝试使用带有CTE子句的WHERE

;WITH CTE AS(
    SELECT *,
        rn = ROW_NUMBER() OVER(PARTITION BY code ORDER BY (SELECT NULL))
    FROM #TEMP_RESULTS  
    WHERE result LIKE '<%'
)
DELETE FROM CTE WHERE rn > 1

根据您要留下的行修改ORDER BY