On 17.01.2011 17:14, Igor Tandetnik wrote:
> 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);

Thanks Igor!
but a stupid question: Doesn't this basically remove
all entries from the table because of the "NOT IN" condition ?

Marcus

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

Reply via email to