我在更新表格中的记录时遇到问题。我整天都在做研究,但它只是在我之外。
基础知识:我有两张桌子
TABLE1
TABLE2
我需要从TABLE1更新nr_g,其中id为TABLE2,但只有来自TABLE1的'kraj''区域''nazwa_hotelu'与TABLE2中的'country''region''hotelName'相等
到目前为止我的尝试:
UPDATE merlinx u
LEFT JOIN
merlinx_new s ON u.nr_g != s.id
SET
u.nr_g = s.id
WHERE
u.kraj = s.country AND u.nazwa_hotelu = s.hotelName AND u.region = s.region
那我只更新了4行...... 1592是不安全的陈述
我的另一个镜头:
UPDATE merlinx_merged
SET
nr_g = (SELECT
merlinx_new.id
FROM
merlinx_new
INNER JOIN
merlinx_merged
WHERE
merlinx_new.country = merlinx_merged.kraj
AND merlinx_new.hotelName = merlinx_merged.nazwa_hotelu
AND merlinx_new.region = merlinx_merged.region)
这就是抛出错误。
浪费了8个小时后,我的脑子就被油炸了。非常感谢帮助。
答案 0 :(得分:2)
我认为您的问题出在您的加入声明中。
LEFT JOIN merlinx_new s ON u.nr_g != s.id
你不应该有那个ON标准(如果我正确理解你的问题)。
如果您想要使用merlinx_new.id中的值覆盖merlinx.nr_g,如果所有条件在WHERE子句中匹配,那么这应该可以解决问题。
UPDATE merlinx u, merlinx_new s
SET u.nr_g = s.id
WHERE u.kraj = s.country AND u.nazwa_hotelu = s.hotelName AND u.region = s.region