Как обновить одну таблицу из другой таблицы?

Я хочу обновить строки из одной таблицы в другую, обе имеют одну структуру, и я использую этот запрос

UPDATE bh_master_ritesh_stock AS st
SET st.tag_uid = apprv.tag_uid ,st.stk_id = apprv.stk_id
FROM bh_stock_approval AS apprv
WHERE st.stock_id = apprv.stock_id

но это дает мне эту ошибку,

You have an error in your SQL syntax; check the manual that corresponds to 
your MySQL server version for the right syntax to use near 
'FROM bh_stock_approval as apprv WHERE st.stock_id = apprv.stock_id' at line 3

где моя ошибка? или я использую неправильный запрос?

4 ответа

попробуйте этот код:

UPDATE bh_master_ritesh_stock AS st,bh_stock_approval AS apprv
SET st.tag_uid = apprv.tag_uid ,st.stk_id = apprv.stk_id 
WHERE st.stock_id = apprv.stock_id

потому что UPDATE использовать предложение From


Синтаксис просто неверен, "FROM" неожиданно:

UPDATE bh_master_ritesh_stock AS st,bh_stock_approval AS apprv
SET st.tag_uid = apprv.tag_uid ,st.stk_id = apprv.stk_id 
WHERE st.stock_id = apprv.stock_id

Для других примеров, которые включают в себя больше таблиц, посмотрите здесь.


Попробуй это.

UPDATE bh_master_ritesh_stock st
INNER JOIN bh_stock_approval apprv on
 st.stock_id = apprv.stock_id
SET 
 st.tag_uid = apprv.tag_uid ,st.stk_id = apprv.stk_id


UPDATE bh_master_ritesh_stock A
SET A.tag_uid, A.stk_id =( select B.tag_uid, B.stk_id
FROM bh_stock_approval B WHERE A.stock_id = B.stock_id)
WHERE EXISTS(SELECT '1' FROM bh_stock_approval B1 WHERE A.stock_id =B1.stock_id)

licensed under cc by-sa 3.0 with attribution.