微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何按行号顺序删除Mysql表中的特定行?

如何解决如何按行号顺序删除Mysql表中的特定行?

这里正在使用角度的内容库,其中删除功能调用API将从存储文件路径的DB中删除索引为(i)的图像文件。但是问题是数据库具有自动递增的ID并声明为主键的ID。 如何通过使用索引i = 4删除ID为17的行的特定行?

我要删除特定行的数据库是下一个

MysqL> select * from ezign.t_content_library;
+----+---------------------------------------------+-------------------------------------------------------------+---------------+
| id | content_name                                | content_path                                                | created_time  |
+----+---------------------------------------------+-------------------------------------------------------------+---------------+
| 14 | gayathri-sri-ptbKY_b1ROc-unsplash.jpg       | /assets/content/gayathri-sri-ptbKY_b1ROc-unsplash.jpg       | 1597082730561 |
| 15 | nathan-anderson-UhagOo7IOyc-unsplash.jpg    | /assets/content/nathan-anderson-UhagOo7IOyc-unsplash.jpg    | 1597131503584 |
| 16 | melnychuk-nataliya-8J6uuvsdj-4-unsplash.jpg | /assets/content/melnychuk-nataliya-8J6uuvsdj-4-unsplash.jpg | 1597141241146 |
| 17 | jo-jo-mPM-x0zPhok-unsplash.jpg              | /assets/content/jo-jo-mPM-x0zPhok-unsplash.jpg              | 1597141406728 |
+----+---------------------------------------------+-------------------------------------------------------------+---------------+

是否有类似的代码 从t_content_library的位置删除................. ??

解决方法

您可以使用row_number()join

delete cl
    from ezign.t_content_library cl join
         (select cl.*,row_number() over (order by id) as seqnum
          from ezign.t_content_library cl
         ) cl2
         on cl2.id = cl.id
    where cl2.seqnum = 4;

或更有效地:

delete cl
    from ezign.t_content_library cl join
         (select cl.*
          from ezign.t_content_library cl
          order by id
          limit 1 offset 3  -- 3 = 4 - 1
         ) cl2
         on cl2.id = cl.id;

不幸的是,DELETE允许LIMIT但不允许OFFSET,因此我认为JOIN是必要的。

,

您可以通过此查询获取要删除的id

select id 
from t_content_library 
order by id limit 3,1

3后面的数字LIMIT表示将跳过3行,数字1表示将返回3个跳过的行之后的1行,因此{{1}第四行的}。

您可以在id语句中使用上述查询,如下所示:

DELETE

请参见demo
结果:

delete
from t_content_library
where id = (select id from (select id from t_content_library order by id limit 3,1) t);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。