Marcus Grimm <mgr...@medcom-online.de> wrote:
> I have a table to record some history data, for example
> items a user recently selected:
> 
> CREATE TABLE THI(ID INTEGER PRIMARY KEY, TimeStamp INTEGER, UserID INTEGER, 
> DataID INTEGER);
> 
> That table needs to trace only the last 10 events, thus I would like
> to remove entries from all users until each user has only 10 recent entries
> in that table.
> 
> I can delete for a specific user (42), using this:
> 
> DELETE FROM THI WHERE
>  (UserID=42) AND
>  (ID NOT IN (SELECT ID FROM THI WHERE UserID=42 ORDER BY TimeStamp DESC LIMIT 
> 10));
> 
> But how do I do this for all users without using a surrounding loop
> on application level ?

delete from THI where ID not in (
    select ID from THI t2 where t2.UserID = UserId
    order by t2.TimeStamp desc limit 10);

-- 
Igor Tandetnik

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to