我想更新特定的行范围,例如从30
开始到50
结束。我怎么能实现这一点。
我尝试过:
UPDATE tab
SET col = 'somevalue'
LIMIT 30, 50
但这不起作用。有什么方法可以更新这些行吗?
我得到的错误是:
查看手册...以获取正确的语法,以便在附近使用' 50'
答案 0 :(得分:7)
您的语句无效MySQL语法和没有意义。语法问题是update
语句不支持偏移(请参阅here)。
逻辑问题在于你没有order by
子句。 MySQL在处理表时不保证表的顺序。所以“第一”二十行和“下一二十二”行没有区别。
为什么这不符合你的要求?
UPDATE tab
SET col = 'somevalue'
LIMIT 20;
如果您有指定排序的特定列,则可以使用where
:
UPDATE tab
SET col = 'somevalue'
wHERE ID >= 30 and ID < 50;
答案 1 :(得分:2)
我认为使用更新您不能使用限制,因为它在select(offset
支持)中,您将不得不尝试这样: -
UPDATE tab
SET col = 'somevalue'
where id between 30 and 50;
LIMIT
可与UPDATE
一起使用,但仅限行数,例如
UPDATE tab
SET col = 'somevalue'
where id > 30
limit 20;
类似问题here。