假设我有21名毒贩有记录。有些经销商的记录超过50行。作为所需的房屋管理清理的一部分,我需要删除的记录是大于/超过50记录每个经销商,但保存记录#1到#50。
我不能把头绕在这上面。我发现几乎没有选择,1)按经销商编号分组,2)按时间戳订购。
谢谢
---Schema Fields---
ID bigint
SearchID bigint
AccountID bigint
UserID bigint
VIN varchar
Year varchar
Make varchar
Model varchar
Trim varchar
[TimeStamp] datetime
--------------------AccountID是经销商的身份证明。ID是要删除的目标记录标识符。TimeStamp用作OrderBy。
发布于 2013-08-14 19:01:57
考虑到您没有提供表模式,让我们假设该表看起来类似于
MyDealersTable
- DealerID
- SomeOtherColumn
- DealerMotherName
- DealerSportInterest
- SomeTimeStamp 你可以尝试这样的方法
;WITH Dealers AS (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY DealerID ORDER BY SomeTimeStamp DESC) RowID
FROM MyDealersTable
)
DELETE
FROM Dealers
WHERE RowID > 50来自表达式(Transact-SQL)
指定临时命名结果集,称为公共表表达式(CTE)。这是从一个简单的查询派生出来的,并在单个SELECT、INSERT、UPDATE或DELETE语句的执行范围内定义。
https://stackoverflow.com/questions/18239971
复制相似问题