1
我正在使用SQL Server代理作业为我的内部Web应用程序创建主用户表,从其他3个数据库提取数据; Sharepoint,实践管理系统和我们的人力资源数据库。使用另一个嵌套查询中的值更新SQL表
目前它去......
truncate table my_tools.dbo.tb_staff
go
insert into my_tools.dbo.tb_staff
(username
,firstname
,surname
,chargeoutrate)
select right(wss.nt_user_name,
,hr.firstname
,hr.surname
,pms.chargeoutrate
from sqlserver.pms.dbo.staff as pms
inner join sqlserver.wss_content.dbo.vw_staffwss as wss
on pms.nt_user_name = wss.nt_user_name
inner join sqlserver.hrdb.dbo.vw_staffdetails as hr
on wss.fullname = hr.knownas
go
的问题是,整个表作为第一步清除所以我的自动递增的主键/标识上tb_staff是一定要改变。另外,如果有人从共享点或PMS中删除,则不会在此表上重新创建,这会导致整个数据库不一致。
我想保留此表中的条目,即使它们从其他系统之一中删除后也是如此。
我想我想要做的是: 1)马克在tb_staff全部退出条目为不活动(使用所谓的主动,并将其设置为false列) 2)运行查询的三个连接表和更新每个找到记录,也标记为活跃。
我看不到如何在Update语句中嵌套select语句,就像我在这里使用Insert语句一样。
我该如何做到这一点?
*请注意我已经将我的SQL编辑到4列并简化了它,所以小错误可能是由于匆忙编辑造成的。真正的查询要大得多。
以及更新标志你也想插入新用户?如果是的话,你在什么版本的SQL Server?希望2008年,所以你可以使用`merge`! – 2011-01-10 15:41:34
是的,我想更新现有的条目并添加任何新条目。我正在使用SQL Server 2008. – Yeodave 2011-01-10 15:43:26