Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带子查询的SQL更新语法_Sql_Sql Server_Sql Update_Syntax Error - Fatal编程技术网

带子查询的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的案例中使用它?