mysql - MySQL 中的 `UPDATE ... SET ... LIMIT`

标签 mysql sql database ddl

我想更新特定范围的行,比如从 30 开始到 50 结束。我怎样才能做到这一点。

我试过:

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

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

我得到的错误是:

Check the manual ... for the right syntax to use near ' 50'

最佳答案

您的语句不是有效的 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;

关于mysql - MySQL 中的 `UPDATE ... SET ... LIMIT`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23183237/

相关文章:

java - Thymeleaf:如何更新现有数据库行而不创建新的行集?

java - android 中的登录验证。

mysql - 选择使用 mysql 对表进行广泛的 reshape

sql - 授予 Oracle 包的权限?

sql - sql中的高级单词搜索

sql - 我怎样才能在 SQL 中做到这一点?我需要找到一个小数据表的可能排列

python - 从文件中读取行以制作二维字典[python]

php - 我想简单地制作一个使用 zendframework2 连接到 mysql 数据库的对象

python - 根据外键字段值选择唯一行的django查询

Android Room - 带有附加字段的多对多关系