我在SQL Server 2008 R2中遇到存储过程问题。
我在EventTimeStamp
,UserID
和SecurityEventCode
列上有一个包含密钥的表格。
我想删除除最新的5个以外的所有行。
DELETE
FROM dbo.UsersSecurityEvents
WHERE
EventTimeStamp NOT IN (SELECT TOP (@maxSecurityEventByUser)
EventTimeStamp, UserID, SecurityEventCode
FROM dbo.UsersSecurityEvents
ORDER BY EventTimeStamp)
现在的问题是:如何将值UserID
和SecurityEventCode
放入where子句中?我需要使用光标吗?我大部分时间都使用Entity Framework作为我的SQL,但需要对旧应用程序进行更改。
感谢您的帮助。
解决
我太傻了。我有一个参数@UserID
。
所以
DELETE
FROM dbo.UsersSecurityEvents
WHERE
UserID = @UserID
AND EventTimeStamp NOT IN (SELECT TOP (@maxSecurityEventByUser)
EventTimeStamp
FROM dbo.UsersSecurityEvents
ORDER BY EventTimeStamp)
是解决方案。
抱歉浪费你的时间。
答案 0 :(得分:0)
尝试
DELETE FROM
dbo.UsersSecurityEvents WHERE
EventTimeStamp NOT IN (
SELECT Top 5 EventTimeStamp
FROM dbo.UsersSecurityEvents
ORDER BY EventTimeStamp desc
)