我有一个存储过程,我想要删除所有记录,但是匹配某个条件的记录。我似乎无法弄明白。
我有以下临时表:
/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
这样做了,因为稍后我想将结果更新为其他内容。没有约束,也没有分组。
答案 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
。