SQL语句问题

yangyi0214ycc 2017-02-13 11:16:43
DECLARE @Num INT
SELECT @Num = MAX(cast(U_code AS INT)) --取最大code
FROM U_MSP

--select @Num
SELECT
T1.Code,
T1.ItemCode,
T1.ItemGroup,
T1.MSP,
T1.FENGZHUANF,
T1.linenum,
T1.Package,
T1.PINPAI,
T1.PNGroup
INTO #TEMP01
FROM #U_MSPSJLRD T0
LEFT JOIN #U_MSPSJLRD1 T1 ON T1.DocEntry=T0.DocEntry
--查询 表头表体的数据 查询当前编辑的数据运行一次查询 +nub

INSERT INTO U_MSP(
U_Code,
U_ItemCode,
U_ItemGroup,
U_MSP,
U_FENGZHUANF,
U_Package,
U_PINPAI,
U_PNGroup


)
--如果没有记录 则插入对应的数据 +nub
SELECT @Num + u0.linenum AS U_Code, --查询MSP对应表+MSP录入单行编号的总数定义U_code
U0.ItemCode,
U0.ItemGroup,
U0.MSP,
U0.FENGZHUANF,
U0.Package,
U0.PINPAI,
U0.PNGroup
FROM #TEMP01 U0
WHERE NOT EXISTS (SELECT 1 FROM U_MSP T0 WHERE T0.U_ItemCode = U0.ItemCode) --+nb1


UPDATE T0 SET
T1.ItemCode=U0.ItemCode
FROM U_MSP T0
LEFT JOIN #TEMP01 U0 ON U0.ItemCode = T1.ItemCode
--如果有记录 则用update更新MSP对应表



我想通过U_MSPSJLRD 来更新 U_MSP 如果有记录则INSERT更新 无记录则用update
但是运行出来 没有更新U—msp
FROM #U_MSPSJLRD T0
LEFT JOIN #U_MSPSJLRD1 T1 ON T1.DocEntry=T0.DocEntry 我在前面加了#在我这个系统可以 加#的意思是取当前单据的数据 SQL里面正常是不可以的



...全文
283 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2017-02-14
  • 打赏
  • 举报
回复
引用 8 楼 yangyi0214ycc 的回复:
有道理 条件呢 哥哥 帮我写更新和插入的条件 插入 的时候 逻辑是 查看当前的数据是不是有记录?如果有记录则不用执行 更新 应该不需要条件吧 还有刷新的时候 条件是 什么我也不知道 我感觉应该有一个条件 我是一个新手
ItemCode是主键么?如果是的话,这个update应该这样: UPDATE T0 SET T0.字段 = U0.字段 ...其他的字段都这样写 FROM U_MSP T0 INNER JOIN #TEMP01 U0 ON U0.ItemCode = T1.ItemCode
yangyi0214ycc 2017-02-14
  • 打赏
  • 举报
回复
引用 7 楼 sinat_28984567 的回复:
那最后这个 UPDATE T0 SET T1.ItemCode=U0.ItemCode FROM U_MSP T0 LEFT JOIN #TEMP01 U0 ON U0.ItemCode = T1.ItemCode 就不对了,应该更新的是U_MSP T0 这个,但是你却set T1.ItemCode=U0.ItemCode,T1是 U_MSPSJLRD1 这个表
有道理 条件呢 哥哥 帮我写更新和插入的条件 插入 的时候 逻辑是 查看当前的数据是不是有记录?如果有记录则不用执行 更新 应该不需要条件吧 还有刷新的时候 条件是 什么我也不知道 我感觉应该有一个条件 我是一个新手
二月十六 2017-02-13
  • 打赏
  • 举报
回复
那最后这个 UPDATE T0 SET T1.ItemCode=U0.ItemCode FROM U_MSP T0 LEFT JOIN #TEMP01 U0 ON U0.ItemCode = T1.ItemCode 就不对了,应该更新的是U_MSP T0 这个,但是你却set T1.ItemCode=U0.ItemCode,T1是 U_MSPSJLRD1 这个表
yangyi0214ycc 2017-02-13
  • 打赏
  • 举报
回复
引用 5 楼 sinat_28984567 的回复:
最后这个update 的T1是谁,怎么判定要更新哪个?或者说怎么判定有没有这条记录?开始我以为是以itemcode 为判断主键依据,可是我看你是要更新这个iteme
#U_MSPSJLRD1 这个是当前的数据 是T1
二月十六 2017-02-13
  • 打赏
  • 举报
回复
最后这个update 的T1是谁,怎么判定要更新哪个?或者说怎么判定有没有这条记录?开始我以为是以itemcode 为判断主键依据,可是我看你是要更新这个iteme
二月十六 2017-02-13
  • 打赏
  • 举报
回复
好吧,看错了,上边这个update 我写错了
二月十六 2017-02-13
  • 打赏
  • 举报
回复
看着语句差不多,最后那个update 可能有点问题,试试这个,手打的没测试。 UPDATE T0
SET T0.ItemCode = U0.ItemCode
FROM U_MSP T0
INNER JOIN #TEMP01 U0 ON U0.ItemCode = T1.ItemCode
yangyi0214ycc 2017-02-13
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
1、楼主这个插入更新的代码逻辑是如果没有则进行insert操作,如果有就进行update。 2、最后update的语句得T1是谁,是不是应该是T0?
对 我说错了 没有才能insert 有就更新update 谁帮我写一个条件 插入 的时候 逻辑是 查看当前的数据是不是有记录?如果有记录则不用执行 更新 应该不需要条件吧 还有刷新的时候 条件是 什么我也不知道 我感觉应该有一个条件
二月十六 2017-02-13
  • 打赏
  • 举报
回复
1、楼主这个插入更新的代码逻辑是如果没有则进行insert操作,如果有就进行update。
2、最后update的语句得T1是谁,是不是应该是T0?

22,209

社区成员

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

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