我知道这听起来相当令人困惑,但我不知道如何更好地解释它。我有一个简化的表格如下:
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 来完成此操作?
*EDIT***
感谢 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
尝试选择最大值ID
通过...分组db_type
首先,然后将其用作子查询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
)
EDIT:
DELETE FROM MyTable
HAVING MAX(ID) > ID;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)