[英]How to delete last record(on condition) from a table in MySql
I have a LoginTime table like this: 我有一个像这样的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
I want to delete last record for user_id=1
. 我想删除
user_id=1
最后一条记录。 Last record of a user can be recognized by datetime
. 用户的最后一条记录可以通过识别
datetime
。
How can I do this with one query. 如何使用一个查询执行此操作。
You need to filter the table by user_id (eg WHERE user_id=1), then sort it by time (eg ORDER BY datetime) and then limit the query to just one item (eg LIMIT 1) and you delete the result of this query. 您需要通过user_id过滤表(例如WHERE user_id = 1),然后按时间排序(例如ORDER BY datetime),然后将查询限制为仅一个项目(例如LIMIT 1),并删除此查询的结果。 At the end youl get query like this:
最后你会得到这样的查询:
DELETE FROM LoginTime WHERE user_id=1 ORDER BY datetime DESC LIMIT 1
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
DELETE FROM table name
RIGHT JOIN (SELECT COUNT(primary key)
FROM table name)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.