Предполагая, что у меня есть таблица foo
где у меня есть что-то вроде этого:Как удалить все строки, которые не являются самыми новыми N для каждого пользователя в MySQL?
id
, user_id
, timestamp
, some_value
То, что я хочу сделать, это удалить все строки, которые не являются новейшим N для каждого пользователя ,
Само удаление может быть обработан: с
DELETE FROM foo WHERE id NOT IN (...)
, чтобы вы могли перефразировать проблему в: Как получить новейший N (там может быть меньше) строк для каждого пользователя. Это означает, что если у меня есть U-пользователи, я могу закончить с N * U-строками, поэтому LIMIT
не будет работать.
Прошу прощения за то, что я не понял, я имел в виду N строк для каждого user_id – tliff
В этом случае вы должны изменить запрос на: Where id = user_id. Я предполагаю, что у вас есть список всех идентификаторов в массиве, вы зацикливаете на каждый идентификатор и выполняете этот запрос для них –