带子查询的SQL更新语法
我有以下更新声明:带子查询的SQL更新语法,sql,sql-server,sql-update,syntax-error,Sql,Sql Server,Sql Update,Syntax Error,我有以下更新声明: UPDATE quotedetailextensionbase qd SET qd.new_capvehicleid = (SELECT cv.new_capvehicleid FROM vwCapidLookup cv WHERE cv.new_capid = qd.new_capid AND cv.new_
UPDATE quotedetailextensionbase qd
SET qd.new_capvehicleid = (SELECT cv.new_capvehicleid
FROM vwCapidLookup cv
WHERE cv.new_capid = qd.new_capid
AND cv.new_captype = qd.new_captype)
UPDATE qd
SET new_capvehicleid = cv.new_capvehicleid
FROM quotedetailextensionbase qd
JOIN (SELECT new_capvehicleid
FROM vwCapidLookup) cv ON cv.new_capid = qd.new_capid AND
cv.new_captype = qd.new_captype
我得到了一个错误,但我不知道为什么
“qd”附近的语法不正确
似乎使用update join语句更容易实现此结果:
UPDATE quotedetailextensionbase qd
SET qd.new_capvehicleid = (SELECT cv.new_capvehicleid
FROM vwCapidLookup cv
WHERE cv.new_capid = qd.new_capid
AND cv.new_captype = qd.new_captype)
UPDATE qd
SET new_capvehicleid = cv.new_capvehicleid
FROM quotedetailextensionbase qd
JOIN (SELECT new_capvehicleid
FROM vwCapidLookup) cv ON cv.new_capid = qd.new_capid AND
cv.new_captype = qd.new_captype
似乎使用update join语句更容易实现此结果:
UPDATE quotedetailextensionbase qd
SET qd.new_capvehicleid = (SELECT cv.new_capvehicleid
FROM vwCapidLookup cv
WHERE cv.new_capid = qd.new_capid
AND cv.new_captype = qd.new_captype)
UPDATE qd
SET new_capvehicleid = cv.new_capvehicleid
FROM quotedetailextensionbase qd
JOIN (SELECT new_capvehicleid
FROM vwCapidLookup) cv ON cv.new_capid = qd.new_capid AND
cv.new_captype = qd.new_captype
请尝试以下SQL:
UPDATE quotedetailextensionbase
SET new_capvehicleid =
(SELECT cv.new_capvehicleid
FROM vwCapidLookup cv
WHERE cv.new_capid = qd.new_capid AND
cv.new_captype = qd.new_captype)
请尝试以下SQL:
UPDATE quotedetailextensionbase
SET new_capvehicleid =
(SELECT cv.new_capvehicleid
FROM vwCapidLookup cv
WHERE cv.new_capid = qd.new_capid AND
cv.new_captype = qd.new_captype)
SQL Server允许您执行以下更新:
UPDATE
qd
SET
new_capvehicleid = cv.new_capvehicleid
FROM
quotedetailextensionbase qd
join vwCapidLookup cv on
cv.new_capid = qd.new_capid
AND cv.new_captype = qd.new_captype
;
这有意义吗?SQL Server允许您执行以下更新:
UPDATE
qd
SET
new_capvehicleid = cv.new_capvehicleid
FROM
quotedetailextensionbase qd
join vwCapidLookup cv on
cv.new_capid = qd.new_capid
AND cv.new_captype = qd.new_captype
;
这有意义吗?使用合并:。当您从另一个表更新时,这是正确的 使用合并:。当您从另一个表更新时,这是正确的 无法在更新中为表名添加别名,因此会出现错误。最好的方法是使用下面的更新qd。。。从quotedetailextensionbase qd JOIN…您不能在更新中为表名别名,这就是出现错误的原因。最好的方法是使用下面的更新qd。。。从quotedetailextensionbase qd JOIN…需要除去集合中赋值左侧的别名。否则,它仍将报告错误。需要清除集合中赋值左侧的别名。否则,它仍将报告错误。需要清除集合中赋值左侧的别名。否则,它仍将报告错误。谢谢。更新了我的答案。需要清除集合中作业左侧的别名。否则,它仍将报告错误。谢谢。更新了我的答案。欢迎来到SO!与其只是提供一个指向merge语句的链接,不如展示一个示例,说明如何在OP的案例中使用它?欢迎使用!与其只是提供一个指向merge语句的链接,不如给出一个例子,说明如何在OP的案例中使用它?