我对SQL并不陌生,但是我得到了停电和我尝试的任何建议,在SO或其他任何地方,我要么搞砸了,要么没有得到任何结果。
我将描述我的情况。
我的DB称为PCR
它有一个RelationID,它是GUID表单中的主键
示例:{4EB31301-FF42-4045-9A04-000490AF3C35} 它有一个ConID和一个ProID作为GUID以及一个INT。
RelationID始终不同。
RelationID; ConID; ProID; INT;
XYZ; 123; 456; 4;
XZY; 123; 456; 8;
YXZ; 123; 456; 16;
例如它的样子。
现在我必须删除INT 8和INT 16
的行我无法使用" DELETE XZY FROM X WHERE D = Z"因为我需要删除行中ConID和ProID相同的每一行,但我需要保留行中INT最低的行。
编辑:但是还有其他ProID和ConID有多个条目和不同的INT。除了具有最低INT的那个之外,还必须删除它们。
我和Count和GROUP BY一起玩,但我总是搞砸了:/
希望有人能再次让我回到路上。
提前致谢!
祝你好运
.c0dy
答案 0 :(得分:0)
前一段时间有过类似的问题。
; WITH cte AS (
SELECT RelationID, ROW_NUMBER() OVER (PARTITION BY ConID, ProID ORDER BY [INT]) AS rnum
FROM YourTable
)
DELETE FROM YourTable
WHERE RelationID in (SELECT RelationId FROM cte WHERE cte.rnum > 1)
CTE需要以分号开头。
编辑 - 更正了语法错误。