首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在按1列分组时,只删除50行以上的记录

在按1列分组时,只删除50行以上的记录
EN

Stack Overflow用户
提问于 2013-08-14 18:54:12
回答 1查看 120关注 0票数 1

假设我有21名毒贩有记录。有些经销商的记录超过50行。作为所需的房屋管理清理的一部分,我需要删除的记录是大于/超过50记录每个经销商,但保存记录#1到#50。

我不能把头绕在这上面。我发现几乎没有选择,1)按经销商编号分组,2)按时间戳订购。

谢谢

代码语言:javascript
复制
---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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-14 19:01:57

考虑到您没有提供表模式,让我们假设该表看起来类似于

代码语言:javascript
复制
MyDealersTable
- DealerID
- SomeOtherColumn
- DealerMotherName
- DealerSportInterest
- SomeTimeStamp 

你可以尝试这样的方法

代码语言:javascript
复制
;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语句的执行范围内定义。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18239971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档