Jon*_*800 2 php sql database sql-server sql-delete
我有一个SQL服务器数据库,我想删除除最后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)";
Run Code Online (Sandbox Code Playgroud)
您可以使用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;
Run Code Online (Sandbox Code Playgroud)
您没有指定用于确定最新记录的列,所以我刚刚发明了CreatedAt.