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'
我也是写的如一楼,但是返回‘第二行 = 附近 语法错误 ’ ------仍然提示该错误
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 多表关联 问题的主要内容,如果未能解决你的问题,请参考以下文章