如何使用另一个表更新表记录

时间:2013-07-24 15:26:04

标签: mysql mysql-workbench

我在更新表格中的记录时遇到问题。我整天都在做研究,但它只是在我之外。

基础知识:我有两张桌子

TABLE1 enter image description here

TABLE2 enter image description here

我需要从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个小时后,我的脑子就被油炸了。非常感谢帮助。

1 个答案:

答案 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