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

时间:2011-01-17 14:25:42

标签: sql 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可以识别用户的上次记录。

如何使用一个查询执行此操作。

3 个答案:

答案 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)