Как записать ОБНОВЛЕНИЕ в зависимости от значений в другой таблице - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть вопрос по поводу "ОБНОВЛЕНИЕ" в MySQL.У меня есть две таблицы table1 и table2, которые связаны table1.id=table2.tab1.Теперь я хотел бы обновить значение в table2 в зависимости от значения в table1.Я пытался сделать это так:

UPDATE table2 SET table2.val='new value' 
WHERE table1.id=table2.tab1 AND table1.val='xy' 

Другими словами, я хотел бы изменить значение val для всех записей в table2, где соответствующая запись в table1 имеет значение'xy'.

К сожалению, это не работает.Может кто-нибудь дать мне подсказку?

Ответы [ 5 ]

0 голосов
/ 29 ноября 2018
UPDATE B
SET B.val='new value' 
FROM table1 A
JOIN table2 B ON A.id=B.tab1
WHERE A.val='xy'
0 голосов
/ 29 ноября 2018
UPDATE table2 
SET table2.val='new value' 
FROM table1 
    JOIN table2 ON table1.id=table2.tab1
WHERE table1.val='xy'
0 голосов
/ 29 ноября 2018

Это неправильный синтаксис.Вы должны использовать update-join

UPDATE table2
JOIN   table1 ON table1.id = table2.tab1
SET    table2.val = 'new value' 
WHERE  table1.val = 'xy' 
0 голосов
/ 29 ноября 2018
UPDATE table2
JOIN table1 ON table1.id=table2.tab1 
SET table2.val='new value' 
WHERE table1.val='xy' 
0 голосов
/ 29 ноября 2018

Вы должны использовать оператор UPDATE + JOIN

UPDATE table2 
JOIN table1 ON table1.id=table2.tab1 
SET table2.val='new value' 
WHERE table1.val='xy' 

или подзапрос

UPDATE table2
SET table2.val='new value' 
WHERE table2.tab1 IN (
    SELECT id
    FROM table1
    WHERE table1.val='xy'
)
...