多重更新mysql

多重更新mysql,mysql,sql,mariadb,Mysql,Sql,Mariadb,我对以下查询有问题: insert into table select * from table on duplicate key update field1 = field1 + 10 我试图更新表1中的一个字段,当然我不能使用update语句,因为我需要更新表中的所有行。 当我尝试执行查询时,mysql返回错误: ERROR 1052 (23000): Column 'field1' in field list is ambiguous “表”和“字段1”是示例名称 --更新-- 查询也

我对以下查询有问题:

insert into table
select *
from table
on duplicate key update field1 = field1 + 10
我试图更新表1中的一个字段,当然我不能使用update语句,因为我需要更新表中的所有行。 当我尝试执行查询时,mysql返回错误:

ERROR 1052 (23000): Column 'field1' in field list is ambiguous
“表”和“字段1”是示例名称

--更新--

查询也可以是:

insert into table
select *
from table
where field2 < 1000
on duplicate key update field1 = field1 + 10
插入到表中
挑选*
从桌子上
其中字段2<1000
重复钥匙更新字段1=字段1+10
我甚至试过:

update table
set field1 = field1 + 10
where field2 < 1000
更新表
设置字段1=字段1+10
其中字段2<1000
但是所有更新的行都有field1=10,总和不起作用

“table”在SQL中是特殊/保留字。将其更改为其他名称,例如“mytable”

更新mytable
设置
字段1=字段1+10
哪里
字段2<1000;

我认为也可以使用名称表来完成,无论如何,这里是使用Insert来完成的答案

INSERT INTO table (id, field1, field2) VALUES(1, "value1","value2") ON
DUPLICATE KEY UPDATE field1= field1+10 WHERE field2 < 1000
在表(id,field1,field2)中插入上的值(1,“value1”,“value2”)
重复密钥更新字段1=字段1+10,其中字段2<1000

您想要哪个
字段1
?从
中选择
或更新表中的列

请参阅有关何时使用此选项而不是您拥有的选项的文档:

... UPDATE field1 = VALUES(field1) + 10

更新表集field1=field1+10有什么问题?如果没有WHERE子句,这将更新所有行。您应该指定filed1属于哪个表,因为它们都具有field1@mj.84确切地说,同一个表的同一字段是updated@Wyzard我无法使用update table,因为我需要在其他查询中使用where子句然后在其他查询中使用where子句,但不要用在这一个。你避免更新的理由对我来说毫无意义。
... UPDATE field1 = VALUES(field1) + 10