SQl update 多表关联 问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQl update 多表关联 问题相关的知识,希望对你有一定的参考价值。

A 表 字段

A.spid, A.shl, A.fdbs
A.shky = '002',
A.rq= '2010-04-06',
A.ontime > '17:38:18',

B 表 字段

B.spid,B.rq,B.shl,B.fdbs

要求实现两张表关联字段 做减法
set
A.shl = A.shl - B.shl
where
A.spid = B.spid and
A.fdbs = B.fdbs and
A.rq = B.rq and
A.ontime > '17:37:18' and
A.shky = '002' and
A.fdbs = 'HKD'
update A
set A.shl = A.shl =A.shl - B.shl --> set A.shl =A.shl - B.shl 不好意思,属于粘贴错误
from retmxls A,daysphz B
where A.spid = B.spid and
A.fdbs = B.fdbs and
A.rq = B.rq and
A.ontime > '17:37:18' and
A.shky = '002' and
A.fdbs = 'HKD'

我也是写的如一楼,但是返回‘第二行 = 附近 语法错误 ’ ------仍然提示该错误

参考技术A update A
set A.shl = A.shl - B.shl
from retmxls A,daysphz B
where A.spid = B.spid and
A.fdbs = B.fdbs and
A.rq = B.rq and
A.ontime > '17:37:18' and
A.shky = '002' and
A.fdbs = 'HKD'

这个是SqlServer的语法本回答被提问者采纳
参考技术B 你的意思是不是,增加明细表的时候,单号表的amount自动更新。
这样的话,写一个触发器就可以了。
create trigger 触发器名称
on 明细
for insert
as
begin
update 单号 set amount = a.amount + b.amount
from 单号 a,inserted b
where a.billid = b.billid
end
参考技术C update a
set
A.shl = A.shl - B.shl
from a,b
where
A.spid = B.spid and
A.fdbs = B.fdbs and
A.rq = B.rq and
A.ontime > '17:37:18' and
A.shky = '002' and
A.fdbs = 'HKD'

你是要这个??表的别名自己加下

set A.shl = A.shl =A.shl - B.shl
都告诉你第二行错误了
A.shl = A.shl =A.shl - B.shl 是什么写法

Oracle 多表update

今天凌晨因为要在数据库里做一些操作,是关于两表关联的update,但语句怎么写都不正确,老是报错,于是心惊肉跳(就怕不能及时完成操作)去查了一下,NND,原来把SQL写成了在SQL Server下面的特有形式,这种语法在Oracle下面是行不通的,急忙改回来,及时完成了任务。顺便也把查到的SQL帖出来,哪天再忘记了,也好在这里找回来:

   update customers a 
   set    city_name=(select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id)
   where  exists (select 1 
                  from   tmp_cust_city b
                  where  b.customer_id=a.customer_id
                 )

   -- update 超过2个值
   update customers a  
   set    (city_name,customer_type)=(select b.city_name,b.customer_type 
                                     from   tmp_cust_city b 
                                     where  b.customer_id=a.customer_id)
   where  exists (select 1 
                  from   tmp_cust_city b
                  where  b.customer_id=a.customer_id
                 )














以上是关于SQl update 多表关联 问题的主要内容,如果未能解决你的问题,请参考以下文章

多表关联UPDATE语句怎么写呀?

ORACLE多表关联UPDATE 语句

ORACLE多表关联UPDATE 语句

ORACLE多表关联UPDATE 语句

ORACLE多表关联UPDATE 语句

ORACLE多表关联UPDATE 语句