我有一个 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
可以识别用户的上次记录。
如何使用一个查询执行此操作。
答案 0 :(得分:27)
您需要通过user_id过滤表(例如WHERE user_id = 1),然后按时间排序(例如ORDER BY datetime),然后将查询限制为只有一个项目(例如LIMIT 1)并删除结果这个查询。最后你会得到这样的查询:
DELETE FROM LoginTime WHERE user_id=1 ORDER BY datetime DESC LIMIT 1
答案 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
答案 2 :(得分:0)
DELETE FROM table name
RIGHT JOIN (SELECT COUNT(primary key)
FROM table name)