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

Sql 将两列复制到另一个表,其中一列是主键

Sql 将两列复制到另一个表,其中一列是主键,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个主键为kha_ID的大型表。这个表中有十几列,我只想替换其中一列,ADM_SRC。问题是ADM_SRC包含空值。我导入了另一个带有kha_id的表和该记录对应的ADM_SRC。我希望下面的查询将正确的ADM\u SRC插入正确的记录中 这是我的查询,我想在运行它之前检查它是否通过 INSERT INTO tblVisits (kha_id, adm_src) SELECT (kha_id, adm_src) from tblAdm_Src tblAdm_Src是导入的表。谢谢 我想在运

我有一个主键为kha_ID的大型表。这个表中有十几列,我只想替换其中一列,ADM_SRC。问题是ADM_SRC包含空值。我导入了另一个带有kha_id的表和该记录对应的ADM_SRC。我希望下面的查询将正确的ADM\u SRC插入正确的记录中

这是我的查询,我想在运行它之前检查它是否通过

INSERT INTO tblVisits (kha_id, adm_src)
SELECT (kha_id, adm_src) from tblAdm_Src
tblAdm_Src是导入的表。谢谢

我想在运行之前检查一下它是否能通过

INSERT INTO tblVisits (kha_id, adm_src)
SELECT (kha_id, adm_src) from tblAdm_Src
也许我没有正确理解你的问题。。但是呢

关闭自动提交 运行您的查询 检查结果 提交一切正常还是回滚结果不符合预期? 我想在运行之前检查一下它是否能通过

INSERT INTO tblVisits (kha_id, adm_src)
SELECT (kha_id, adm_src) from tblAdm_Src
也许我没有正确理解你的问题。。但是呢

关闭自动提交 运行您的查询 检查结果 提交一切正常还是回滚结果不符合预期? 假定

tblVisits中没有数据 Id不是自动递增的标识列 所有列都指定了默认值 那么你的查询就行了

insert into tblVisits (kha_id, adm_src) select kha_id, adm_src from tblAdm_Src
如果某些列没有默认值,则需要在查询中提供默认值,例如

insert into tblVisits (kha_id, adm_src, otherColumn) 
select kha_id, adm_src, 'a value' from tblAdm_Src
如果kha_id是标识列,则需要使用SET identity_INSERT

set identity_insert tblVisits on
insert into tblVisits (kha_id, adm_src) select kha_id, adm_src from tblAdm_Src
set identity_insert tblVisits off
如果访问中存在现有数据,并且您需要更新匹配的行,但插入缺少的行,那么您需要

-- update existing rows
update tblVisits 
    set adm_src = tblAdm_Sr.adm_src
from VisitSource
    where tblVisits.kha_id = tblAdm_Sr.kha_id

-- insert missing rows
insert into tblVisits (kha_id, adm_src) 
select kha_id, adm_src from tblAdm_Src
   where not exists(
     select kha_id from tblVisits where tblVisits.kha_id = tblAdm_Src.kha_id)
当然,还需要考虑默认值和自动递增的Id列

tblVisits中没有数据 Id不是自动递增的标识列 所有列都指定了默认值 那么你的查询就行了

insert into tblVisits (kha_id, adm_src) select kha_id, adm_src from tblAdm_Src
如果某些列没有默认值,则需要在查询中提供默认值,例如

insert into tblVisits (kha_id, adm_src, otherColumn) 
select kha_id, adm_src, 'a value' from tblAdm_Src
如果kha_id是标识列,则需要使用SET identity_INSERT

set identity_insert tblVisits on
insert into tblVisits (kha_id, adm_src) select kha_id, adm_src from tblAdm_Src
set identity_insert tblVisits off
如果访问中存在现有数据,并且您需要更新匹配的行,但插入缺少的行,那么您需要

-- update existing rows
update tblVisits 
    set adm_src = tblAdm_Sr.adm_src
from VisitSource
    where tblVisits.kha_id = tblAdm_Sr.kha_id

-- insert missing rows
insert into tblVisits (kha_id, adm_src) 
select kha_id, adm_src from tblAdm_Src
   where not exists(
     select kha_id from tblVisits where tblVisits.kha_id = tblAdm_Src.kha_id)

当然,考虑到默认值和必要的自动递增Id列

我对sql server不熟悉,但不知道是否存在/如何操作:我对sql server不熟悉,但不知道是否存在/如何操作:您不需要解释是否需要在tblVisits中插入行,更新行,或者两者兼而有之。我需要将行插入tblVisits。那么为什么不试试呢?您不解释是否需要在tblVisits中插入行、更新行或两者兼而有之。我需要将行插入tblVisits。那么您为什么不试试呢?