SQL Server 2008 更新查询不工作

SQL Server 2008 update query not working

我需要用名称匹配的 view_kantech_imagesimage_id2 的值更新 user_group table 中的 image_id

我的查询返回错误:

update user_group
set image_id = (select vkm.image_id2 
                from view_kantech_matched as vkm 
                where vkm.name like user_group.name)
where name = view_kantech_matched.name

它returns的错误是:

Msg 4104, Level 16, State 1, Line 1
The multi-part identifier "view_kantech_matched.name" could not be bound.

您可以改用 update-join 语法:

UPDATE ug
SET    ug.image_id = vkm.image_id2
FROM   user_group ug
JOIN   view_kantech_matched vkm  ON vkm.name = ug.name

试试这个

UPDATE
    im
SET
    im.image_id  = image_id2
FROM
    user_group im
    JOIN
    view_kantech_matched gm ON im.name = gm.name

呃,是的...你不能这样做。

您需要确保 UPDATE 中的子查询...

select vkm.image_id2 
from view_kantech_matched as vkm 
where vkm.name like user_group.name

... 可以独立 运行。您不能在子查询中使用 user_group.name...SQL 服务器还不知道它是什么。

然后您的 "outer query" 尝试在内部查询中使用 WHERE 子句链接回“view_kantech_matched”。你不能这样做!!

update user_group
set image_id = 
( ...)
where name = view_kantech_matched.name

我同意 Mureinik 的方法。

您需要摆脱子查询,并在 update.

中执行 join

如果您的子查询 returns 多行,您正尝试使用记录集更新列,这在 SQL 服务器中是不可能的。尝试按照 Murenik

的建议使子查询中的内联 table