簡體   English   中英

從數據庫中刪除每個UserID的除最后15個條目外的所有條目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM