如何按行号顺序删除Mysql表中的特定行?
这里我正在使用angular中的一个内容库,其中一个delete函数调用API从存储文件路径的DB中删除一个具有索引(i)的图像文件。但问题是DB的id是自动递增的,并声明为主键如何使用索引I=4删除ID为17的eg行的特定行? 要删除特定行的DB如下所示如何按行号顺序删除Mysql表中的特定行?,mysql,sql,sql-delete,delete-row,Mysql,Sql,Sql Delete,Delete Row,这里我正在使用angular中的一个内容库,其中一个delete函数调用API从存储文件路径的DB中删除一个具有索引(i)的图像文件。但问题是DB的id是自动递增的,并声明为主键如何使用索引I=4删除ID为17的eg行的特定行? 要删除特定行的DB如下所示 mysql> select * from ezign.t_content_library; +----+---------------------------------------------+--------------------
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\U内容库中删除,其中………..?您可以使用
行编号()
和加入
:
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
允许限制
,但不允许使用偏移量
,因此我认为有必要使用加入
。您可以通过此查询获得要删除的id
:
select id
from t_content_library
order by id limit 3, 1
LIMIT
之后的数字3
表示跳过3行,数字1
表示返回跳过的3行之后的1行,因此返回第4行的id
。您可以在
DELETE
语句中使用上述查询,如下所示:
delete
from t_content_library
where id = (select id from (select id from t_content_library order by id limit 3, 1) t);
请参阅。结果:
看看mysql的行号
| 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 |