DELETE语句上的MySQL LIMIT
我为最近遇到的错误放了一个测试表。它涉及在尝试从MySQL表中删除单个记录时使用LIMIT。DELETE语句上的MySQL LIMIT
我说的错误是“您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的‘LIMIT 1’在行正确的语法手册1”
把我放在一起的表称为测试;它有3列,id,名称和创建。我用几条记录填充表格,然后尝试删除一条记录。以下是我用来试图完成这一点的陈述。
DELETE t FROM test t WHERE t.name = 'foo' LIMIT 1
不使用LIMIT 1的,则执行该语句就好了,当然,如果没有需要它,我不会使用限制。
我完全知道我可以使用其他语句来成功完成此DELETE。见下: DELETE FROM test WHERE name = 'foo' LIMIT 1
但是我的问题集中在为什么第一个声明不与LIMIT工作。
所以我的问题是,我做了错误的关于第一个语句产生这个错误?
只需使用
DELETE FROM test WHERE 1= 1 LIMIT 10
OP明确表示,他知道这是工作......“我完全知道我可以使用另一种说法[...] DELETE FROM test WHERE name ='foo'LIMIT 1'“ – 2015-03-05 15:59:43
使用row_count - your_desired_offset
所以,如果我们有10行,并希望以抵消3
10 - 3 = 7
现在查询delete from table where this = that order asc limit 7
保持最后3和order desc
来ke EP第3:
$row_count - $offset = $limit
Delete from table where entry = criteria order by ts asc limit $limit
DELETE t.* FROM test t WHERE t.name = 'foo' LIMIT 1
@Andre如果我明白你的要求,我觉得唯一缺少的是T * FROM
之前。
“但是,您不能在多表DELETE中使用ORDER BY或LIMIT”。 这似乎回答我的问题。 – Andre 2011-05-24 15:06:13
是的 - 抱歉没有从OP读取,但你怎么说从关节删除是正确的 – 2011-05-24 15:17:03