两个表用Where子句关联,然后更新为何出错
问题:
1。两个表与Where子句相关联,然后被更新。为什么是错的?
更新a集合a.fb=b.fb其中a.fa=b.fa
2。有两个表,billlist和B_see。将B_see中的值写入billlist。
我删除了前缀,也报告了一个错误。SQL语句如下所示
更新清单集清单。ProdNewprice=B_see.a,billList。ProdnewMoney=B_see.b,billList。ProdDiscount=B_see.c
从账单列表,B _见
比尔利斯在哪?Id=B_see。身份
回答:
当其他大中型数据库开发人员转而使用jet db 4访问时,经常会出现这个问题。
不允许在access中使用where tablea . field a = tableb . field a来连接update。这是T-sql的语法。你第一次教T-sql的时候,你的老师不是应该说过这个语句的要点吗?
t-sql的语法必须转换成Asni语法,而且要通过join来完成。
更新a.fa = b.fa集合a.fb = b.fb上的一个内连接b;
问题:
为了实现这个目标,如何修改下面的update语句
更新usertabb094 t1,(select field_3,sum(field_9)作为field_91,sum(field_10)作为field _ 101 from user tabb 095 group by field _ 3)T2 set t1 . field _ 8 =(t1 . field _ 8 * t1 . field _ 7+T2 . field _ 101)/(t1 . field _ 7+T2 . field _ 91)其中t1.field_1=t2.field_3
上面的语句表明:
操作必须使用可更新的查询。
回答:
必须分成两个查询才能运行。
1、从usertabb095 group by field_3中选择field_3,sum(field_9)作为field_91,sum(field_10)作为field_101进入[095]
注意:使用嵌套查询会导致你提到的问题,但是使用临时表没问题。
2、将usertabb094更新为t1.field_1=[095]上的t1内部联接095。field_3设置t1 . field _ 8 =(t1 . field _ 8 * t1 . field _ 7+[095]。field_101)/(t1.field_7+[095]。field _ 91);
0条评论