DELETE语句中的MySQL LIMIT

And*_*dre 49 mysql limit sql-delete

我为最近遇到的错误整理了一个测试表.它涉及在尝试从MySQL表中删除单个记录时使用LIMIT.

我说的错误是" 你的SQL语法有错误;检查与你的MySQL服务器版本相对应的手册,以便在第1行的'LIMIT 1'附近使用正确的语法 "

我放在一起的表叫做测试 ; 它有3列,id,namecreated.我用几个记录填充了表,然后尝试删除一个.以下是我过去尝试完成此操作的声明.

DELETE t FROM test t WHERE t.name = 'foo' LIMIT 1

如果不使用LIMIT 1,语句执行得很好,但是如果不需要它,我当然不会使用LIMIT.

我完全知道我可以使用另一个语句来成功完成此DELETE.见下文: DELETE FROM test WHERE name = 'foo' LIMIT 1

但是我的问题集中在为什么第一个声明不适用于LIMIT.

所以我的问题是,对于生成此错误的第一个语句,我做错了什么?

Man*_*pta 32

简单地用

DELETE FROM test WHERE 1= 1 LIMIT 10 
Run Code Online (Sandbox Code Playgroud)

  • OP明确表示他知道这是有效的......"我完全知道我可以使用另一个语句来成功完成这个DELETE.[...]`DELETE FROM test WHERE name ='foo'LIMIT 1` " (2认同)

Ian*_*ood 21

删除查询仅允许在DELETE'命令'之后的修饰符告诉数据库处理事情的方式/方式.

看到这个页面

  • "但是,您不能在多表DELETE中使用ORDER BY或LIMIT".这似乎回答了我的问题. (25认同)

小智 6

DELETE t.* FROM test t WHERE t.name = 'foo' LIMIT 1
Run Code Online (Sandbox Code Playgroud)

@Andre如果我理解你在问什么,我认为唯一缺少的是t.*之前FROM.


Mic*_*ter 5

文档

You cannot use ORDER BY or LIMIT in a multiple-table DELETE.
Run Code Online (Sandbox Code Playgroud)