简体   繁体   English

如何从MySql中的表中删除最后一条记录(有条件)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM