根据条件使用另一个表的列更新列值

nic*_*App 102 mysql sql sql-server oracle

我有两张桌子......

table1(id,item,price)值:

id | item | price
-------------
10 | book | 20  
20 | copy | 30   
30 | pen  | 10
Run Code Online (Sandbox Code Playgroud)

.... table2(id,item,price)值:

id | item | price
-------------
10 | book | 20
20 | book | 30
Run Code Online (Sandbox Code Playgroud)

现在我想:

update table1 
   set table1.Price = table2.price 
 where table1.id = table2.id
   and table1.item = table2.item.
Run Code Online (Sandbox Code Playgroud)

我该怎么做?

Rag*_*geZ 190

这样的事情应该这样做:

UPDATE table1 
   SET table1.Price = table2.price 
   FROM table1  INNER JOIN  table2 ON table1.id = table2.id
Run Code Online (Sandbox Code Playgroud)

你也可以试试这个:update table1 set price =(从table2中选择table1.id = table2.id的价格);

  • 对于mysql:`UPDATE table1 INNER JOIN table2 ON table1.id = table2.id SET table1.Price = table2.price`可以使用 (17认同)
  • 它不适用于mysql (9认同)
  • 这在Oracle中无效. (5认同)
  • 它给我错误消息:无效的对象table1. (3认同)
  • 它给我错误不能绑定多部分标识符“ table1.price”。 (2认同)

小智 77

这肯定会奏效:

UPDATE table1
SET table1.price=(SELECT table2.price
  FROM table2
  WHERE table2.id=table1.id AND table2.item=table1.item);
Run Code Online (Sandbox Code Playgroud)