mysql - 如何在按组和日期排序后删除除一行之外的所有 MySQL 行?

标签 mysql sql

我有这张 table

enter image description here

我想创建一个存储过程,该过程将删除所有记录,但只保留每个 Application_Id 和External_Account_Id 的最新记录(具有最新的Last_Warning_Message)。所以执行存储过程后,表应该是这样的:

enter image description here

最佳答案

在MySQL中,您可以在删除中使用join:

delete t
    from thistable t join
         (select Application_Id, External_Account_Id, 
                 max(Last_Warning_Message) as max_Last_Warning_Message
          from thistable t
          group by Application_Id, External_Account_Id
         ) tt
         on t.Application_Id = tt.Application_Id and
            t.External_Account_Id = tt.External_Account_Id and
            t.Last_Warning_Message < tt.max_Last_Warning_Message;

关于mysql - 如何在按组和日期排序后删除除一行之外的所有 MySQL 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50552078/

相关文章:

MySQL CSV 导入 : datetime value

mysql - 错误 #1064 - SQL 语法错误

php - 安全地将表数据替换为新数据

sql - 如何关闭与数据库的现有连接

python - Python 或 MySQL 中是否有一个内置函数可以返回一组 3 个经常出现的单词?

mysql - 在 Rails 中获取 mysql 结果,但格式类似于 MySql 客户端界面

MySQL 和 GROUP_CONCAT() 最大长度

SQL 查询更新不起作用

php - 选择所有带标签的线程和其余标签?

mysql - 将查询结果复制到另一个表中