我有数据库表请求:
+----+---------+-----------------+--------+
| id | user_id | bicycle_type_id | height |
+----+---------+-----------------+--------+
一个用户可以在此表中包含多个记录。当然,那些记录会有不同的身份。
当我显示(在前端)项目列表时,它独立于数据库中的id
列,因此列表始终从1开始,然后是2 ......依此类推。因此,作为函数参数,我得到ID的数组(在前端列表中的id,而不是数据库中的id。与序列中的数字一样)我需要删除的记录。
重要 - 我无法更改前端
当我只知道ASC
顺序的{id(序列号)中的id时,我如何预先形成查询以删除元素?这些与表中的实际ID无关?
答案 0 :(得分:0)
例如,如果要删除表格中的第12行:
DELETE FROM requests ORDER BY id ASC LIMIT 1 OFFSET 11
要删除第5行:
DELETE FROM requests ORDER BY id ASC LIMIT 1 OFFSET 4
删除第34行:
DELETE FROM requests ORDER BY id ASC LIMIT 1 OFFSET 33
我建议你先制作一份表副本并在副本上进行测试。
OR
尝试以下操作,看看是否找到了要删除的正确行。
SELECT FROM requests ORDER BY id ASC LIMIT 1 OFFSET 4
答案 1 :(得分:0)
我认为MySQL不支持OFFSET
的{{1}}子句中的LIMIT
。
您可以这样做:
DELETE
我会建议另外几件事:
delete requests r join
(select r2.*
from requests r2
order by id
offset 11 limit 1
) rr
on r.id = rr.id;
自动递增,因此新值始终大于以前的值(因此,id
不会干扰insert
s。