三表更新的问题,急,求解! 直接先做一个Delete,然后Insert 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我有三張表:表pd:pdid pdDate sid001 2006-12-12 002002 2006-12-12 001表pdDetail:pdid pid quantity001 0301003 5001 0402101 3001 0301001 2002 0301001 3表stockpid quantity sid我要用第一张表和第二张表更新到第三张表,每一个字段都要对应好,如果stock里已经存在pid就更新,如果没有就插入,如:存在pid quantity sid0301001 1 001则更新quantity的值为3,如果没有0402101这条记录,则插入这条记录,该如何实现求高手指点。create table pd(pdid varchar(10), pdDate datetime, sid varchar(10))insert pdselect '001' , '2006-12-12' , '002' union allselect '002' , '2006-12-12' , '001'create table pdDetail( pdid varchar(10) , pid varchar(10), quantity int)insert pdDetailselect '001', '0301003', 5 union allselect '001', '0402101', 3 union allselect '001', '0301001', 2 union allselect '002', '0301001', 3create table stock(pid varchar(10), quantity int , sid varchar(10))drop table pd,pdDetail,stock分两步做:--一步update stockset stock.quantity=pdDetail.quantity,stock.sid=pd.sidfrom pd,pdDetail,stock where pd.pdid=pdDetail.pdid and stock.pid=pdDetail.pid--存在更新--二步insert stockselect pdDetail.pid,pdDetail.quantity,pd.sidfrom pd,pdDetail where pd.pdid=pdDetail.pdidand not exists(select 1 from stock where pid=pdDetail.pid)--没有插入select * from stockpid quantity sid ---------- ----------- ---------- 0301001 2 0020301001 3 0010301003 5 0020402101 3 002(所影响的行数为 4 行) roy_88 有些错误,用在我这里可能丢失数据 存储过程调用问题 sql条件应该怎么写 用sql求两数之间的最小素数(函数调用) 请指教! 文本文件插入的语句怎么写? 关于操作数类型冲突: nvarchar 与 image 不兼容 数字逻辑课程设计 跪求 如何根据字段排序 sql server 查询语句 超时问题 我很 虚心 的再请教条简单的sql语句 询问合并全部商品批次语句~~~ SQL Server内存占有量狂涨,请问如何能够解决?
pdid pdDate sid
001 2006-12-12 002
002 2006-12-12 001表pdDetail:
pdid pid quantity
001 0301003 5
001 0402101 3
001 0301001 2
002 0301001 3表stock
pid quantity sid我要用第一张表和第二张表更新到第三张表,每一个字段都要对应好,如果stock里已经存在pid就更新,如果没有就插入,如:存在
pid quantity sid
0301001 1 001
则更新quantity的值为3,
如果没有0402101这条记录,则插入这条记录,该如何实现
求高手指点。create table pd(pdid varchar(10), pdDate datetime, sid varchar(10))
insert pd
select '001' , '2006-12-12' , '002' union all
select '002' , '2006-12-12' , '001'create table pdDetail( pdid varchar(10) , pid varchar(10), quantity int)
insert pdDetail
select '001', '0301003', 5 union all
select '001', '0402101', 3 union all
select '001', '0301001', 2 union all
select '002', '0301001', 3create table stock(pid varchar(10), quantity int , sid varchar(10))drop table pd,pdDetail,stock
分两步做:
--一步
update stock
set stock.quantity=pdDetail.quantity,stock.sid=pd.sid
from pd,pdDetail,stock
where pd.pdid=pdDetail.pdid and stock.pid=pdDetail.pid--存在更新
--二步
insert stock
select pdDetail.pid,pdDetail.quantity,pd.sid
from pd,pdDetail where pd.pdid=pdDetail.pdid
and not exists(select 1 from stock where pid=pdDetail.pid)--没有插入select * from stock
pid quantity sid
---------- ----------- ----------
0301001 2 002
0301001 3 001
0301003 5 002
0402101 3 002(所影响的行数为 4 行)