SQL Server 2008 更新查询不工作
SQL Server 2008 update query not working
我需要用名称匹配的 view_kantech_images
中 image_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
我需要用名称匹配的 view_kantech_images
中 image_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