mysql - 如何从 MySQL 中的分组数据中删除行

标签 mysql sql

我有一张 table :

enter image description here

我想为每个 live_login 保留最多两个条目,这些记录按 last_login_ts 排序。

结果,您应该得到:

enter image description here

! 如果可能的话,不如只使用 SQL,而不使用 php 和其他工具。

P.S. 对不起我的英语:)

回答:

delete gr.* from my_table gr inner join (Select x.* from my_table x join my_table y on y.live_login = x.live_login and y.last_login_ts <= x.last_login_ts group by x.live_login, x.last_login_ts having count(*) > 2) gh on gh.live_login=gr.live_login and gh.dead_login=gr.dead_login;

谢谢你,草莓!

最佳答案

Select x.* 
  from my_table x 
  join my_table y 
    on y.live_login = x.live_login 
   and y.last_login_ts <= x.last_login_ts 
 group by x.live_login
     , x.last_login_ts 
having count(*) <= 2

或者类似的东西

关于mysql - 如何从 MySQL 中的分组数据中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29765432/

相关文章:

MySQL从子查询返回数组,以及NULL

mysql - 教义或地方给出奇怪的结果

sql - 什么是 SQL Server 中的坏索引以及如何识别它们?

Mysql - 按列选择最高值

sql - 获取特定类别的记录百分比

sql - 从动态交叉表查询和 vba Access 报告到 "manually"生成报告

带有分组依据的子查询的 MySQL UPDATE

mysql - 从第一个 MySQL 查询的结果匹配的另一个表中添加列

php - 插入多个表不会插入所有记录

mysql - 从mysql中的函数获取结果