从一张表导入另一张表的问题!

zwjxxm 2009-03-16 11:45:28
加精
有两张表:
临时表:table1
正式表:table2
table1,table2表结构相同,有以下几列:
{
a1 varchar(50),主键
a2 varchar(50),主键
a3 varchar(50),主键
a4 bigint(8),
a5 varchar(50)

}
以前表中a1,a2两列是主键,现在又增加了一列a3作为主键

问题:把数据从table1 导入到table2中,
要求:如果table1中的a1,a2,a3三列和table2中的a1,a2,a3三列不全相同,做Insert操作,否则:Update a4,a5二列值。
现在我做转档的时候,提示在table2中不能插入重复主键???不知道什么原因?????

急!!!!!!
...全文
3543 52 打赏 收藏 转发到动态 举报
写回复
用AI写文章
52 条回复
切换为时间正序
请发表友善的回复…
发表回复
zkl312743141 2012-03-20
  • 打赏
  • 举报
回复
学习 13 楼
custom1234 2011-11-16
  • 打赏
  • 举报
回复
记下,以前有这种问题再详细看!
Brian_wh 2010-07-15
  • 打赏
  • 举报
回复
学习学习
happymusic7654321 2010-01-12
  • 打赏
  • 举报
回复
方法不错,试试!
andayxy 2009-03-21
  • 打赏
  • 举报
回复
学习学习!!
sccba 2009-03-21
  • 打赏
  • 举报
回复
chenzhaochun 2009-03-21
  • 打赏
  • 举报
回复
了解了解 ~ 顺便顶一下
alisidide 2009-03-19
  • 打赏
  • 举报
回复
bangding
mmmy1 2009-03-18
  • 打赏
  • 举报
回复
这真的可以吗
冰岛男孩 2009-03-18
  • 打赏
  • 举报
回复
同意用游标,不然不好实现
JXB01033016 2009-03-18
  • 打赏
  • 举报
回复
hen hao a
  • 打赏
  • 举报
回复
.
update tb2
set a4 = tb1.a4, a5 = tb1.a5
from tb2 , tb1
where tb2.a1 = tb1.a1 and tb2.a2 = tb1.a2 and tb2.a3 = tb1.a3

2.
insert into tb2 select * from tb1 where not exists(select 1 from tb1 where tb2.a1 = tb1.a1 and tb2.a2 = tb1.a2 and tb2.a3 = tb1.a3)
QD98ZHQ 2009-03-17
  • 打赏
  • 举报
回复
哇塞。又学习了一招。强。顶
nwao7890 2009-03-17
  • 打赏
  • 举报
回复
这得mark,记下来
romantic1717 2009-03-17
  • 打赏
  • 举报
回复
d好厚爱
fomyth 2009-03-17
  • 打赏
  • 举报
回复
up
ld_bit 2009-03-17
  • 打赏
  • 举报
回复
意:以前表中a1,a2两列是主键,现在又增加了一列a3作为主键
是不是和这个有关系呢,a3是我新增加的列又把它做为其中的一个联合主键之一,默认值设为了'0'
ld_bit 2009-03-17
  • 打赏
  • 举报
回复
意:以前表中a1,a2两列是主键,现在又增加了一列a3作为主键
是不是和这个有关系呢,a3是我新增加的列又把它做为其中的一个联合主键之一,默认值设为了'0'
guangboo 2009-03-17
  • 打赏
  • 举报
回复
原因就是table1中的a1,a2,a3三列和table2中的a1,a2,a3三列完全相同了。
解决方法:考虑效率问题。批量修改,添加。尽量少的做表链接和遍历。
方案(供参考):
1.将两表重复主键的数据备份到临时表里。
2.将临时表的数据更新到table2的a4,a5字段。
3.将table1 插入到table2 条件是table1的主键不在临时表里。
smoking1017 2009-03-17
  • 打赏
  • 举报
回复
观望
加载更多回复(29)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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