6

我正在使用 MySQL v5.0.45 并尝试删除表中的第 n 行,而不管其 ID 号如何。我在 PHP 中设置了一个原型,然后将其集成到我的 Web 开发项目中,在我的数据库中设置了以下内容:

CREATE TABLE prototype_1 (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name varchar(30));

INSERT INTO prototype_1 (name) VALUES ('A');
INSERT INTO prototype_1 (name) VALUES ('B');
INSERT INTO prototype_1 (name) VALUES ('C');

够简单!现在我尝试使用“LIMIT”,但出现以下错误:

“错误 1235 (42000):此版本的 MySQL 尚不支持 'LIMIT & IN/ALL/ANY/SOME 子查询'”

现在我知道您不能在子查询中使用 LIMIT ,但是,没有某种解决方法吗?

我可以选择第 n 行并使用以下内容很好地显示它:

SELECT * FROM prototype_1 LIMIT 1,1;

因此返回'B'但为什么我不能删除!?

4

2 回答 2

3

你需要这样的小技巧

delete from prototype_1 where id = (select id from (select id from prototype_1 order by id limit 1,1) as t)

来自文档

LIMIT 子句可用于限制 SELECT 语句返回的行数。LIMIT 接受一个或两个数字参数,它们都必须是非负整数常量

(...)

有两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。初始行的偏移量为 0(不是 1):

于 2011-03-03T16:53:34.833 回答
0

像这样删除n-th 记录。确保按所需的列对结果进行排序,在本例中为id列:

DELETE FROM prototype_1 ORDER BY id LIMIT n-1,1
于 2018-10-04T14:09:40.587 回答