您能否告诉我如何删除未知号码的最后一条记录(有条件)?
例如,在这种情况下,我想删除ID为6到10的记录。
注意:此表和记录不是恒定的。
+----+-----+---------+
| id | url | emailid |
+----+-----+---------+
| 1 | 10 | 1 |
| 2 | 20 | 0 |
| 3 | 30 | 2 |
| 4 | 40 | 0 |
| 5 | 50 | 10 |
| 6 | 60 | 0 |
| 7 | 70 | 0 |
| 8 | 80 | 0 |
| 9 | 90 | 0 |
| 10 | 100 | 0 |
+----+-----+---------+
谢谢...
最佳答案
似乎您要删除所有值均为0
的最后一组记录。这有点痛苦。您可以找到以下最小ID:
select min(t.id)
from table t
where t.emailid = 0 and
not exists (select 1 from table t2 where t2.id > t.id and t2.emailid <> 0);
逻辑是:查找
emailid
为0的所有行,并且不存在不为零的后续emailid。您可以使用
delete
将其放入join
中:delete t
from table t cross join
(select min(t.id) as first0id
from table t
where t.emailid = 0 and
not exists (select 1 from table t2 where t2.id > t.id and t2.emailid <> 0)
) tmin
where t.id >= tmin.first0id;
关于mysql - 如何删除未知号码最后一条记录(有条件)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26714085/