`MySQL`中的`UPDATE`和`LIMIT`

时间:2014-04-20 13:52:30

标签: mysql sql database ddl

我想更新特定的行范围,例如从30开始到50结束。我怎么能实现这一点。

我尝试过:

UPDATE tab
SET    col = 'somevalue' 
LIMIT 30, 50

但这不起作用。有什么方法可以更新这些行吗?

我得到的错误是:

  

查看手册...以获取正确的语法,以便在附近使用' 50'

2 个答案:

答案 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