Как удалить последнюю запись (по условию) из таблицы в MySql
У меня есть таблица LoginTime:
id | user_id | datetime
1 | 1 | 2011-01-17 18:51:05
2 | 1 | 2011-01-18 18:51:05
3 | 1 | 2011-01-19 18:51:05
4 | 2 | 2011-01-19 18:51:05
Я хочу удалить последнюю запись для user_id=1
. Последняя запись пользователя может быть распознана datetime
.
Как я могу сделать это с помощью одного запроса.
Ответы
Ответ 1
Вам нужно отфильтровать таблицу user_id (например, WHERE user_id = 1), а затем отсортировать ее по времени (например, ORDER BY datetime), а затем ограничить запрос только одним элементом (например, LIMIT 1), и вы удалите результат этот запрос. В конце вы получите запрос следующим образом:
DELETE FROM LoginTime WHERE user_id=1 ORDER BY datetime DESC LIMIT 1
Ответ 2
DELETE FROM logintime t1
JOIN
(
SELECT MAX(datetime)
AS max_dt
FROM logintime
WHERE user_id = 1
) t2
WHERE t1.datetime = t2.max_dt
AND user_id = 1
Ответ 3
DELETE FROM table name
RIGHT JOIN (SELECT COUNT(primary key)
FROM table name)