[英]Remove all entries except last 15 from database for each UserID
我有一個SQL Server數據庫,我想刪除除最后15條之外的每一行,但是,我需要按照“ UserID”來刪除。
我的數據庫包含許多不同用戶的條目,其ID為“ UserID”列,因此我希望每個用戶在數據庫中都有15個條目,而舊的條目將被刪除。
這將是什么SQL?
這是我本人的努力示例:
$sql = "DELETE FROM SocialSenseTracking WHERE UserID NOT IN (SELECT TOP 15 UserID='$user' FROM SocialSenseTracking ORDER BY UserID DESC)";
您可以為此使用CTE和row_number()
:
with todelete as (
select sst.*, row_number() over (partition by UserId order by CreatedAt desc) as seqnum
from SocialSenseTracking sst
)
delete from todelete
where seqnum > 15;
您沒有指定用於確定最新記錄的列,所以我才發明了CreatedAt
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.