sql 多表更新查询

sql 多表更新查询,第1张

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语句,多表关联进行更改.等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10189573.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存