如何导入数据,实现关键字段数据库中已经有的就更新,没有的就添加?

ryhbgs 2008-11-19 04:34:55
如题。
主要是这样的应用:
数据库中有个学生数据,每年有新生加入,也有老生数据更新。如何实现,关键字段比如是学号,数据库中已经有的,则自动更新数据,没有的则自动添加数据,自己想法,不知道能不能实现。

多谢各位大侠!!
...全文
166 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
泡面之夏 2008-11-22
  • 打赏
  • 举报
回复
if exists(select 1 from tb where stuno = @stuno) --存在此数据,更新
update .
else --不存在,插入
insert .

两条sql要是有关联可以用事务来实现
CodeShow 2008-11-20
  • 打赏
  • 举报
回复
进来看看
水族杰纶 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ryhbgs 的回复:]
可能我说得不是很清楚:
数据库中有学校目前的全部学生信息,每年有新生加入(新生入校),也有老生数据更新(留级、转专业)。如何实现,关键字段比如是学号,数据库中已经有的,则自动更新数据,没有的则自动添加数据,自己想法,不知道能不能实现。

楼上的几个解答有点不太明白!请赐教,谢谢!!
[/Quote]
--假設你用於更新的數據為表ta,要更新的表為tb
update b set 字段1=a.某字段1,字段2=a.某字段2 from tb b inner join ta a on b.学号=a.学号 --更新存在的
insert tb(字段列表)select 字段列表 from ta where 学号 not in (select 学号 from tb) --插入不存在的
claro 2008-11-20
  • 打赏
  • 举报
回复
过。
hyde100 2008-11-20
  • 打赏
  • 举报
回复
if exists(select 1 from tb where stuno = @stuno) --存在此数据,更新
update .
else --不存在,插入
insert .
JYR520 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fcuandy 的回复:]
SQL codeupdate a set a.f1=b.f1,a.f2=b.f2 ,... from ta a inner join tb b on a.学号 =b.学号

insert ta(f1,f2,...fn) select a.f1,a.f2,...a.fn from tb a
left join ta b
on a.学号=b.学号
where b.学号 is null
[/Quote]


支持一下
linguojin11 2008-11-20
  • 打赏
  • 举报
回复

if exists(select 1 from tb where stuno = @stuno) --存在此数据,更新
update .
else --不存在,插入
insert .


支持
yms_wangxm 2008-11-20
  • 打赏
  • 举报
回复

if exists(select 1 from tb where stuno = @stuno) --存在此数据,更新
update .
else --不存在,插入
insert .

楼上的这个应该能实现。。。
bbb332 2008-11-19
  • 打赏
  • 举报
回复
..........
dawugui 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 ryhbgs 的帖子:]
如题。
主要是这样的应用:
数据库中有个学生数据,每年有新生加入,也有老生数据更新。如何实现,关键字段比如是学号,数据库中已经有的,则自动更新数据,没有的则自动添加数据,自己想法,不知道能不能实现。

多谢各位大侠!!
[/Quote]
写个存储过程,在里面去进行判断,然后调用这个存储过程.

大致方法是:(假设学号变量为@stuno)
if exists(select 1 from tb where stuno = @stuno)
update ...
else
insert ...
ryhbgs 2008-11-19
  • 打赏
  • 举报
回复
可能我说得不是很清楚:
数据库中有学校目前的全部学生信息,每年有新生加入(新生入校),也有老生数据更新(留级、转专业)。如何实现,关键字段比如是学号,数据库中已经有的,则自动更新数据,没有的则自动添加数据,自己想法,不知道能不能实现。

楼上的几个解答有点不太明白!请赐教,谢谢!!
rucypli 2008-11-19
  • 打赏
  • 举报
回复
if exists
更新
else
插入
moyifeng 2008-11-19
  • 打赏
  • 举报
回复

update a set a.f1=b.f1,a.f2=b.f2 ,... from ta a left join tb b on a.学号 =b.学号

insert ta(f1,f2,...fn) select a.f1,a.f2,...a.fn from tb a
where a.学号 not in (select 学号 from ta)
fcuandy 2008-11-19
  • 打赏
  • 举报
回复
update a set a.f1=b.f1,a.f2=b.f2 ,... from ta a inner join tb b on a.学号 =b.学号

insert ta(f1,f2,...fn) select a.f1,a.f2,...a.fn from tb a
left join ta b
on a.学号=b.学号
where b.学号 is null
水族杰纶 2008-11-19
  • 打赏
  • 举报
回复
如果所有字段都更新,可以考慮將符合學生數據的(學號)先全部刪除,然後再插入

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧