Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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 2008 - Fatal编程技术网

Sql 如何将列移动到另一个现有表?

Sql 如何将列移动到另一个现有表?,sql,sql-server-2008,Sql,Sql Server 2008,该列是默认值为0的十进制数,并且刚刚添加到目标表中。在目标表中,该行(具有该id)可能还不存在。因此,有时必须更新值,有时必须插入具有现有id和值的新行 到目前为止,我得到的是: insert into nieuw (p_id, b) select p_id, a from oud update nieuw set nieuw.b = oud.a from oud o inner join nieuw n on o.p_id = n.p_id; 我尝试了几次迭代,但总是出现诸如“无效列名”之类

该列是默认值为0的十进制数,并且刚刚添加到目标表中。在目标表中,该行(具有该id)可能还不存在。因此,有时必须更新值,有时必须插入具有现有id和值的新行

到目前为止,我得到的是:

insert into nieuw (p_id, b)
select p_id, a
from oud
update nieuw
set nieuw.b = oud.a
from oud o
inner join nieuw n
on o.p_id = n.p_id;

我尝试了几次迭代,但总是出现诸如“无效列名”之类的错误。

请查看
MERGE
语句。据我所知,您的
INSERT
/
SELECT
/
更新
语法不受支持。您可以使用来自
内部联接的
更新
来处理已经存在的行。您需要一个单独的
INSERT
语句来处理不匹配的行。请参阅Bertrand博士的博客,了解
不存在的地方
与检查连接上的空值以及我建议不要做任何事情的其他原因。如果这不仅仅是一次性脱机事件,那么您需要考虑在事务中包装它。这只需要发生一次,所以我最终使用了NHiBiNT的C代码。我应该删除这个问题吗?或者,如果SQL server合并错误得到修复,是否可以用其他语言回答这个问题?