обновить значения столбцов столбцом другой таблицы на основе условия [дубликата]

73

У меня есть две таблицы...

table1 (id, item, price):

id | item | price
-------------
10 | book | 20  
20 | copy | 30   
30 | pen  | 10

.... table2 (id, item, price) значения:

id | item | price
-------------
10 | book | 20
20 | book | 30

Теперь я хочу:

update table1 
   set table1.Price = table2.price 
 where table1.id = table2.id
   and table1.item = table2.item.

Как мне это сделать?

  • 0
    @mrp: вы не должны помещать каждую RDBM в качестве тега, потому что кто-то может посоветовать вам какое-то решение для конкретного поставщика.
Теги:
sql-server

2 ответа

119
Лучший ответ

Что-то вроде этого должно это сделать:

UPDATE table1 
   SET table1.Price = table2.price 
   FROM table1  INNER JOIN  table2 ON table1.id = table2.id

Вы также можете попробовать следующее: update table1 set price = (выберите цену из таблицы2, где table1.id = table2.id);

  • 3
    Это дает мне сообщение об ошибке: неверный объект table1.
  • 1
    Это дает мне ошибку. Не удалось связать идентификатор из нескольких частей "table1.price".
Показать ещё 8 комментариев
58

Это, безусловно, будет работать:

UPDATE table1
SET table1.price=(SELECT table2.price
  FROM table2
  WHERE table2.id=table1.id AND table2.item=table1.item);
  • 1
    Но это обновление больше не строк :(, чем это ...
  • 0
    Он должен обновлять только количество строк, возвращенных во внутреннем запросе, но в два раза больше не происходит обновления :(
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню