This is a tricky issue, but what about this:
SELECT user_id, GROUP_CONCAT(item_id ORDER BY `timestamp`) AS items FROM wb_user_book_current_item T WHERE NOT EXISTS ( SELECT 1 FROM wb_user_book_current_item T2 WHERE T2.user_id = T.user_id ORDER BY T2.`timestamp` DESC LIMIT 10,1 ) OR T.`timestamp` > ( SELECT T2.`timestamp` FROM wb_user_book_current_item T2 WHERE T2.user_id = T.user_id ORDER BY T2.`timestamp` DESC LIMIT 10,1 ) GROUP BY user_id
This, of course, assumes that you will not have two lines with the same timestamp for the same user.
If the timestamp field is always a positive integer, you can also replace NOT EXISTS...OR with COALESCE :
SELECT user_id, GROUP_CONCAT(item_id ORDER BY `timestamp`) AS items FROM wb_user_book_current_item T WHERE T.`timestamp` > COALESCE(( SELECT T2.`timestamp` FROM wb_user_book_current_item T2 WHERE T2.user_id = T.user_id ORDER BY T2.`timestamp` DESC LIMIT 10,1 ), 0) GROUP BY user_id
The original answer, but, apparently, MySQL does not understand how to do this properly, and complains that the subtitle returns multiple rows. Of course, we want a few lines; this is a GROUP_CONCAT . Grr.
Unfortunately, I think there is no real way to use a subquery:
SELECT T.user_id, GROUP_CONCAT((SELECT T2.item_id FROM wb_user_book_current_item T2 WHERE T2.user_id = T.user_id ORDER BY T2.`timestamp` LIMIT 10)) AS items FROM wb_user_book_current_item T GROUP BY user_id
Otherwise, adding LIMIT anywhere limits the number of groups or limits the overall set of records by table (not group) - not what you are trying to achieve.