woo*_*gie 1 sql t-sql sql-server
我有一个大表(访问)与主键kha_ID.这个表中有十几个列,我只想替换其中一个,ADM_SRC.问题是ADM_SRC包含空值.我使用kha_id导入了另一个表,该记录的对应ADM_SRC.我希望我的查询会将正确的ADM_SRC插入到正确的记录中.
这是我的查询,我想查看它是否会在我运行之前通过
INSERT INTO tblVisits (kha_id, adm_src)
SELECT (kha_id, adm_src) from tblAdm_Src
Run Code Online (Sandbox Code Playgroud)
tblAdm_Src是导入的表.谢谢.
假设
然后你的查询将工作
insert into tblVisits (kha_id, adm_src) select kha_id, adm_src from tblAdm_Src
Run Code Online (Sandbox Code Playgroud)
如果某些列没有默认值,则需要在查询中提供默认值,例如
insert into tblVisits (kha_id, adm_src, otherColumn)
select kha_id, adm_src, 'a value' from tblAdm_Src
Run Code Online (Sandbox Code Playgroud)
如果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
Run Code Online (Sandbox Code Playgroud)
如果在访问中存在现有数据并且您需要更新匹配的行,但是插入缺少的行,那么您需要类似的东西
-- 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)
Run Code Online (Sandbox Code Playgroud)
当然还要考虑默认值并根据需要自动递增Id列
| 归档时间: |
|
| 查看次数: |
5237 次 |
| 最近记录: |