update from 有3表,子查询返回行数太少,达不到预期

handsome1234 2015-08-23 10:17:50
update from 有3表,子查询返回行数太少。

TAB1,TAB2,TAB3

TAB1:
A1,A2,A3,A4
数据:
1111,2222,333,-
1111,4444,555,-
1111,4453,666,-
2222,2222,333,-
2222,4444,555,-
2222,4453,666,-

TAB2:
A1,A2,A3
数据:
1111,FF,DD
2222,EE,KK

TAB3:
A1,A2
数据:
EE,GG
FF,MM

TAB1的A1 值和TAB2的A1是是对应的,
TAB2的A2和TAB3的A1是对应的
想把TAB1的A4 更新成TAB3的A2

写下:
UPDATE xtm12
SET wpsxlb27 = RTRIM(LTRIM(MYRESULT.F2))
FROM ( SELECT RTRIM(LTRIM(X12.wpsxlb1)) 工艺号,
RTRIM(LTRIM(JJ.F1)) F1
FROM xtm12 X12 ,
YHJ_YANGHUI YY ,
YHJ_JJQ JJ
WHERE RTRIM(LTRIM(X12.wpsxlb1)) = RTRIM(LTRIM(YY.工艺号))
AND RTRIM(LTRIM(YY.季节)) = RTRIM(LTRIM(JJ.F2))
GROUP BY RTRIM(LTRIM(X12.wpsxlb1)),RTRIM(LTRIM(JJ.F1))
) AS MYRESULT
WHERE RTRIM(LTRIM(MYRESULT.工艺号)) = RTRIM(LTRIM(xtm12.wpsxlb1))

单独 FROM 里面的子查询
SELECT RTRIM(LTRIM(X12.wpsxlb1)) 工艺号,
RTRIM(LTRIM(JJ.F1)) F1
FROM xtm12 X12 ,
YHJ_YANGHUI YY ,
YHJ_JJQ JJ
WHERE RTRIM(LTRIM(X12.wpsxlb1)) = RTRIM(LTRIM(YY.工艺号))
AND RTRIM(LTRIM(YY.季节)) = RTRIM(LTRIM(JJ.F2))
GROUP BY RTRIM(LTRIM(X12.wpsxlb1)),RTRIM(LTRIM(JJ.F1))
返回 很少一部分行,达不到预期
各位有何良策?
...全文
510 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxfvba 2015-08-24
  • 打赏
  • 举报
回复
update a set A4=c.A2 from Tab1 a,TAB2 b,TAB3 c where a.A1=b.A1 and b.A2=c.A1
超级路灯 2015-08-24
  • 打赏
  • 举报
回复
update tab1 set tab1.a4 = temp_table.a2 from (select t1.a1,tab3.a2 as a2 from tab2 inner join tab1 as t1 on tab2.a1=t1.a1 inner join tab3 on tab3.a1 = tab2.a2) as temp_table where tab1.a1=temp_table.a1 这样子应该就行了吧
xyz1125 2015-08-24
  • 打赏
  • 举报
回复
子查询里面根本就不需要tab1这个表
handsome1234 2015-08-24
  • 打赏
  • 举报
回复
子查询结果就不正确
yu_fang1987 2015-08-24
  • 打赏
  • 举报
回复
引用 6楼泉_哥 的回复:
xiaoxiangqing 2015-08-24
  • 打赏
  • 举报
回复
是执行结果不正确吗?
  • 打赏
  • 举报
回复

22,298

社区成员

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

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