您能否告诉我如何删除未知号码的最后一条记录(有条件)?

例如,在这种情况下,我想删除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/

10-10 17:08