sql 多表更新查询
语句:
update OneReport
set OneReportoneration=aa2
from
(
select pbproductid a1, ooneration a2 from productbaseinf pb
inner join Oneration o
on pbproductno = oproductno
) a
where OneReportproductid=aa1
因为表productbaseinf和表Oneration的关联字段没看到,所以假设是productno
如果你两个数据库在同一个服务器上可以用
select库1x,库2xxfrom库1table1,库2table2where库1table1xxx=库2table2xxx这种方式写
这样你只需要写一个库1的连接字符串。然后把语句丢给库1处理。
如果是两个不同服务器。还是用链接或存储过程吧。
update user set name=(select cname from master a inner join Source c with(nolock) on asource = ccode
where adate>= '2011-07-01 00:00:00000' and adate< '2011-08-01 00:00:00000')
where id = aid
UPDATE多表更新(转)(2008-05-12 15:29:04)
转载标签:update多表更新sql 分类:php网络编程
在开发中,数据库来回换,而有些关键性的语法又各不相同,这是一件让开发人员很头痛的事情本文总结了Update语句更新多表时在SQL Server,Oracle,MySQL三种数据库中的用法我也试了SQLite数据库,都没成功,不知是不支持多表更新还是咋的
在本例中: 我们要用表gdqlpj中的gqdltks,bztks字段数据去更新landleveldata中的同字段名的数据,条件是当 landleveldata 中的GEO_Code字段值与gdqlpj中的lxqdm字段值相等时进行更新
SQL Server语法:UPDATE { table_name WITH ( < table_hint_limited > [ n ] ) | view_name | rowset_function_limited } SET { column_name = { expression | DEFAULT | NULL } | @variable = expression | @variable = column = expression } [ ,n ] { { [ FROM { < table_source > } [ ,n ] ] [ WHERE < search_condition > ] } | [ WHERE CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name } ] } [ OPTION ( < query_hint > [ ,n ] ) ]
SQL Server示例: update a set agqdltks=bgqdltks,abztks=bbztks from landleveldata a,gdqlpj b where aGEO_Code=blxqdm
Oracle语法: UPDATE updatedtable SET (col_name1[,col_name2])= (SELECT col_name1,[,col_name2] FROM srctable [WHERE where_definition])
Oracel 示例: update landleveldata a set (agqdltks, abztks)= (select bgqdltks, bbztks from gdqlpj b where aGEO_Code=blxqdm)
MySQL语法: UPDATE table_references SET col_name1=expr1 [, col_name2=expr2 ] [WHERE where_definition]
MySQL 示例: update landleveldata a, gdqlpj b set agqdltks= bgqdltks, abztks= bbztks where aGEO_Code=blxqdm
如果两个表有关联的话是可以的,比如A表的id和b表的b_id外键关系就可以
update a left join b on aid = bb_id set aname = '',bname='' (where条件)
可以。
如有A,B两个表:
A:字段cust_id,cust_name
B:字段cust_id,cust_name
如何用一个UPDATE语句关联字段cust_id把A中cust_name改为相对应的B表中的cust_name;
updateasetacust_name=bcust_namefroma
joinb
onacust_id=bcust_id
ORACLE下是:
updateA表a
setcust_name=(selectbcust_namefromB表bwherebcust_id=acust_id)
whereexists(select1fromB表bwherebcust_id=acust_id);
'cust_name='处可以支持多个字段
如(cust_name,cust_sex)=(selectbcust_name,bcust_sexfrom
扩展资料
UPDATE与多表关联更新
SELECT uUSER_NAME_,gdesc_, uemail_, umobile_
FROM BDF2_GROUP g, BDF2_GROUP_MEMBER gm, UBP_USER u
where gid_=gmgroup_id_ and gmusername_=uuser_name_
AND gdesc_ IN (
'310115-02',
'310118-02',
'310112-02'
)
order by uUSER_NAME_
更新三个表的数据,要注意他们的键值关系,按你说的:
B表引用A表和C表的外键,因此要修改的话,先要修改B表,再修改A表和C表,否则,可能触发外键的错误。
同时更新三个表的数据,我将它理解为保证一个事务——即要不一起成功,要么一起失败,那么问题就很简单了,三个update语句,加一个事务声明就OK了:
begin tran
update TableB
update TableA
update TableC
commit
这就是“同时”更新的效果了。不信你可以试试,将其中一条update语句,故意写错,你看看其他两条记录有没有成功
一、当用一个表中的数据来更新另一个表中的数据,T-SQL提供多种写法(下面列出了二种),但建议用第一种写法,虽然传统,但结构清晰。
并且要注意,当用一个表中的数据来更新另一个表中的数据时,二个表一定要有关联!
1
update t1
set t1c2 = t2c2
fro m t2
where t1c1 = t2c1
2
Update t1
set t1c2 = t2c2
fro m t1 inner join t2
on t1c1 = t2c1
二、FROM 子句中指定的表的别名不能作为 SET column_name 子句中被修改字段的限定符使用。
例如,下面的内容无效:
UPDATE titles
SET tytd_sales = tytd_sales + sqty
FROM titles t, sales s
WHERE ttitle_id = stitle_id
AND sord_date = (SELECT MAX(salesord_date) FROM sales)
若要使上例合法,请从列名中删除别名 t 或使用本身的表名。
1
UPDATE titles
SET ytd_sales = tytd_sales + sqty
FROM titles t, sales s
WHERE ttitle_id = stitle_id
AND sord_date = (SELECT MAX(salesord_date) FROM sales)
2
UPDATE titles
SET titlesytd_sales = tytd_sales + sqty
FROM titles t, sales s
WHERE ttitle_id = stitle_id
AND sord_date = (SELECT MAX(salesord_date) FROM sales)
以上就是关于sql 多表更新查询全部的内容,包括:sql 多表更新查询、sql数据库多个数据库进行关联查询求助(数据库多张表关联查询)、sql语句,多表关联进行更改.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)