数据库表插入数据后,数据和原来不一致(50分)

  • 主题发起人 主题发起人 走在边缘
  • 开始时间 开始时间

走在边缘

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手,请帮忙解决!非常感谢.<br>由数据库A &nbsp;prodord表中数据导入到数据库B sysorder表中,执行语句为:<br>IF NOT EXISTS (select * from sysorder where orderno=@porderno) <br>insert sysorder (orderno,ordername,createdate,editdate,referprice,normalprice)<br>select pocode,poname,startdate,getdate() as editdate,0 as referprice,0 as normalprice from A.prodord where pocode=@porderno<br>此语句是在存储过程循环执行的.<br><br>在数据库中结果:<br>原数据库A中: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;新数据库B中:<br>pocode &nbsp; &nbsp; &nbsp; &nbsp; poname &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; orderno &nbsp; &nbsp; &nbsp;ordername<br>016B-B07 &nbsp; &nbsp; &nbsp; 016B# 车椭圆形布标 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 016B-B07 &nbsp; &nbsp; 016B# 座身 &nbsp;车布标*1<br>016P-B15 &nbsp; &nbsp; &nbsp; 016P# &nbsp;座布 &nbsp;大翅加棉x2 &nbsp; &nbsp; &nbsp;016P-B15 &nbsp; &nbsp; 016P# &nbsp;大翅加棉x2<br>101D-C02 &nbsp; &nbsp; &nbsp; 101D# 网篮 &nbsp;车网篮假线x2 &nbsp; &nbsp; 101D-C02 &nbsp; &nbsp; 101D# 网篮 上网篮假线x2<br>FM906H-U03 &nbsp; &nbsp; FM906H &nbsp;雨罩 成型 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FM906H-U03 &nbsp; FM906H &nbsp;雨罩 成型<br><br>以上为查询的结果,其中有相同的(最后一条相同),也有不同的(主要是name不同,code和orderno是一样的).真确的结果应该是两边是一样的.<br><br>请问各位为何会出现这种情况?请经验丰富的高人给个解决方法.
 
是不是数据库的字符集不一样
 
出现以上情况的原因是 pocode 的值在表中不唯一,所以得到的第一条记录,这样插入新表的是第一个,你可以需要是其他的值,所以就插入错误了,解决的办法就是使 POCODE唯一,或关件再加上其他条件使查询结果唯一就行了。
 
李翔鹏:<br>POCODE 为关键字 所以不会出现不唯一的情况 &nbsp; <br>在B表中ordername出现的名称根本在A表 poname 中不存在.(所以不是关键字问题)
 
可能你所使用的條件出現了不唯一值<br>你試試將where後面的條件再寫詳細點行不行?
 
来自:走在边缘, 时间:2008-11-5 11:10:09, ID:3928100<br>李翔鹏:<br>POCODE 为关键字 所以不会出现不唯一的情况 &nbsp; <br>在B表中ordername出现的名称根本在A表 poname 中不存在.(所以不是关键字问题)<br><br>你不加条件试试,肯定是一样的,所以还是条件出问题了,查询的结果不唯一造成的,你的<br>POCODE在源表和目的表中都是主键吗?<br>如果不是肯定有重复的,这么简单的问题,仔细查一下就明白了。
 
select pocode,count(pocode) from a.prodord group by pocode having count(pocode)&gt;1 <br>如果有值 ,就错误了
 
后退
顶部