我知道这听起来很困惑,但我不知道如何更好地解释它。我在下面简化了一个表格:
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/