求存储过程判断插入数据值并更新,数据量比较大,谢谢!
本帖最后由 apllcode 于 2013-03-17 18:33:33 编辑
/*临时表tb1#
HNOSDateCdate
HD20130309000302013/3/12 16:442013/3/13 18:00
HD20130309000342013/3/12 16:44NULL
HD20130311001732013/3/13 21:332013/3/15 13:32
HD20130311001772013/3/13 21:33NULL
HD20130311001772013/3/13 21:332013/3/15 13:32
原表TB1
HNOSDateCdate
HD20130311001812013/3/13 21:332013/3/15 16:07
HD20130311002052013/3/14 11:032013/3/15 17:39
HD20130311002052013/3/14 11:032013/3/15 9:33
HD20130311002062013/3/14 11:032013/3/14 11:03
HD20130309000302013/3/12 16:442013/3/13 17:00
HD20130311001732013/3/13 21:482013/3/15 13:32
*/
把临时表数据插入到原表TB1中,插入时判断如果HNO的值已存就更新CDATE,CDATE,如果不存就直接插入,求存储过程,数据量很大.得出结果
/*HNOSDateCdate
HD20130311001812013/3/13 21:332013/3/15 16:07
HD20130311002052013/3/14 11:032013/3/15 17:39
HD20130311002072013/3/14 11:032013/3/15 9:33
HD20130311002062013/3/14 11:032013/3/14 11:03
HD20130309000302013/3/12 16:442013/3/13 18:00 --此条原表本来已经存在,更新CDATE,CDATE
HD20130311001732013/3/13 21:332013/3/15 13:32 --此条原表本来已经存在,更新CDATE,CDATE
HD20130309000342013/3/12 16:44NULL --此条不存,直接插入
HD20130311001772013/3/13 21:332013/3/15 13:32 --此条不存,直接插入
*/
[解决办法]
UPDATE A SET
SDate = T.SDate
Cdate = T.Cdate
FROM TB1 A,#TB1 T
WHERE A.HNO = T.HNO
INSERT INTO TB1(HNO,SDate,Cdate )
SELECT HNO,SDate,Cdate
FROM #TB1 T
WHERE NOT EXISTS (
SELECT 1 FROM TB1 A
WHERE A.HNO = T.HNO
)
[解决办法]
判断语句建索引试试
[解决办法]
哎,选册,再创建
Delete From 原TB1 Where HNO in(Select HNO From 临时表tb)
Insert INTO 原TB1(字段1,字段2...) Select 字段1,字段2..From 临时表tb