1

我在更新表中的记录时遇到问题。我整天都在做研究,但这超出了我的范围。

基础知识:我有两张桌子

表格1 在此处输入图像描述

表2 在此处输入图像描述

我需要使用来自 TABLE2 的 id 更新来自 TABLE1 的 nr_g 但只有来自 TABLE1 的 'kraj' 'region' '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 个小时之后,我的思绪被炸毁了。非常感谢您的帮助。

4

1 回答 1

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
于 2013-07-24T15:49:31.133 回答