三表更新的问题,急,求解!

mincunbao 2006-12-24 08:46:09
我有三張表:

表pd:
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这条记录,则插入这条记录,该如何实现
求高手指点。
...全文
163 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mincunbao 2006-12-24
  • 打赏
  • 举报
回复
不过,还是很感谢你
mincunbao 2006-12-24
  • 打赏
  • 举报
回复
roy_88 有些错误,用在我这里可能丢失数据
中国风 2006-12-24
  • 打赏
  • 举报
回复
我有三張表:

表pd:
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', 3

create 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 行)

mincunbao 2006-12-24
  • 打赏
  • 举报
回复
搞定,thank you,给分结贴
sqshine 2006-12-24
  • 打赏
  • 举报
回复
直接先做一个Delete,然后Insert

22,294

社区成员

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

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