mysql - 从表中删除记录,其中<字段的最大数量并保留最大数量

标签 mysql sql select

我知道这听起来很困惑,但我不知道如何更好地解释它。我在下面简化了一个表格:

DB Type       ID
================
Table1         1                 
Table1         2                 
Table1         3                 
Table1         4                 
Table1         5                 
Table2         6                 
Table2         7                 
Table2         8                 
Table2         9                 
Table2        10 

我想要实现的是基本上清除此表,但如果有意义的话,为每个数据库类型保留具有最高 ID 的记录 - 因此在这种情况下它将是 (Table1,5) 和 (Table2,10 ) 并删除所有其他记录。是否可以仅通过 MySQL 来执行此操作?

*编辑***

回答感谢 Yogendra Singh 的提示

DELETE FROM MyTable WHERE ID NOT IN (SELECT * FROM (SELECT MAX(ID) from MyTable GROUP BY DB Type) AS tb1 ) ORDER BY ID ASC

最佳答案

尝试先通过 db_type 选择最大 ID 组,然后将其用作 not in 的子查询。

 DELETE FROM MyTable 
 WHERE ID NOT IN 
    (SELECT ID FROM 
      (SELECT MAX(ID) AS ID from MyTable GROUP BY DB Type) AS tb1
    )

编辑:

 DELETE FROM MyTable
 HAVING MAX(ID) > ID;

关于mysql - 从表中删除记录,其中<字段的最大数量并保留最大数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13609943/

相关文章:

mysql - 优化sql中以下查询时间

mysql - 在 MySQL : which workaround? 中存储微秒

php - Laravel - HTML POST 表单,找不到页面

php - 从 PHP MySQL 数组填充 HTML 选择列表

php - 深度加入Cakephp

php - 为什么 (My)SQL 中的 Sum() 函数返回的值是我期望的值的两倍?

sql - QSqlQuery 准备语句 - 正确使用

excel - VBA - 选择方法失败

c# - 将 oracle 查询的嵌套选择转换为 linq

sql-server - 在 SQL Server 中仅使用一个选择来获取倒数第二行?