Riy*_*yan 6 mysql sql mysql-error-1235 sql-delete
我正在使用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');
Run Code Online (Sandbox Code Playgroud)
很简单!现在我尝试使用'LIMIT',但是我收到以下错误:
"ERROR 1235(42000):此版本的MySQL尚不支持'LIMIT&IN/ALL/ANY/SOME子查询'"
现在我明白你不能在子查询中使用LIMIT,但是,有没有某种解决方法?
我可以选择第n行并使用以下内容很好地显示它:
SELECT * FROM prototype_1 LIMIT 1,1;
Run Code Online (Sandbox Code Playgroud)
因此返回'B',但为什么我不能删除!?
你需要这样的小技巧
delete from prototype_1 where id = (select id from (select id from prototype_1 order by id limit 1,1) as t)
Run Code Online (Sandbox Code Playgroud)
来自文档
LIMIT 子句可用于限制 SELECT 语句返回的行数。LIMIT 接受一个或两个数字参数,它们必须都是非负整数常量
(...)
使用两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。初始行的偏移量为 0(不是 1):