代码如下,MySQL三种数据库教程中的用法.我也试

  • 栏目:数据 时间:2020-05-01 15:51
<返回列表

sql update多表联合更新的方法

SQL UPDATE实现多表更新

有些时候我们需要同时更新多个表中的数据那么就需要用到下面方法了:

可以根据一个表的字段的值 像关联查询一样 修改 一个表的字段值 和另一个表关联update 表一 set 表一.列名= 表二.列名 from 表一,表二 where 表一.ID = 表二.ID

from:
在开发中,数据库来回换,而有些关键性的语法又各不相同,这是一件让开发人员很头痛的事情.本文总结了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 a.gqdltks=b.gqdltks,a.bztks=b.bztks from landleveldata a,gdqlpj b where a.GEO_Code=b.lxqdm

sqlite 多表更新方法

本文总结了Update语句更新多表时在SQL Server,Oracle,MySQL三种数据库教程中的用法.我也试

Oracle语法: UPDATE updatedtable SET (col_name1[,col_name2...])= (SELECT col_name1,[,col_name2...] FROM srctable [WHERE where_definition])
Oracel 示例: update landleveldata a set (a.gqdltks, a.bztks)= (select b.gqdltks, b.bztks from gdqlpj b where a.GEO_Code=b.lxqdm)

复制代码 代码如下://----------------------------------update t1 set col1=t2.col1from table1 t1inner join table2 t2 on t1.col2=t2.col2

了SQLite数据库,都没成功,不知是不支持多表更新还是咋的. 在本例中: 我们要用表gdqlpj

MySQL语法: UPDATE table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition]
MySQL 示例: update landleveldata a, gdqlpj b set a.gqdltks= b.gqdltks, a.bztks= b.bztks where a.GEO_Code=b.lxqdm

这是一个非常简单的批量更新语句 在SqlServer中支持此语法 sqlite中却不支持

中的gqdltks,bztks字段数据去更新landleveldata中的同字段名的数据,条件是当

有A、B张表,其记录如下:
A表

sqlite中可转换为 如下语法

landleveldata 中的GEO_Code字段值与gdqlpj中的lxqdm字段值相等时进行更新.

c1       c2

1 a1
2 a2
3 a3
8 a8
B表

复制代码 代码如下:update table1 set col1=(select col1 from table2 where col2=table1.col2)

SQL Server语法:UPDATE { table_name WITH ( table_hint_limited [ ...n ] ) |

c1       c3

1 b1
2 b1
3 b3
10 b10

update ta_jbnt_tzhd_pht_Area_xiang set t1=(select sys_xzqhdm.name from sys_xzqhdm where t2=sys_xzqhdm.code)

view_name | rowset_function_limited } SET { column_name = { expression | DEFAULT

A.c1与B.c1相等,用一条sql语句,实现A.c2的值更新为B.c3

UPDATE    A
SET A.c2 =B.c3
from A ,B
where A.c1=B.c1
UPDATE    A
SET A.c2 =B.c3
from A inner join B on A.c1=B.c1
注意:update后面是不能跟多表的,但跟在from子句后面

SQL Server 多表更新方法

| NULL } | @variable = expression | @variable = column = expression } [ ,...n ]

复制代码 代码如下://----------------------------------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 ] ) ]

{ { [ FROM { table_source } [ ,...n ] ] [ WHERE search_condition ] } | [

SQL Server示例:

WHERE CURRENT OF { { [ GLOBAL ] cursor_name } | cursor_variable_name } ] } [

复制代码 代码如下:update a set a.gqdltks=b.gqdltks,a.bztks=b.bztks fromlandleveldata a,gdqlpj b where a.GEO_Code=b.lxqdm

OPTION ( query_hint [ ,...n ] ) ]

access数据库多表更新方法

SQL Server示例: update a set a.gqdltks=b.gqdltks,a.bztks=b.bztks from

复制代码 代码如下:x = "update " + DLTB + " a inner join tbarea2 b on a.objectid=b.FID set a." + fd_dltb_xzdwmj

landleveldata a,gdqlpj b where a.GEO_Code=b.lxqdm

Oracle语法: UPDATE updatedtable SET (col_name1[,col_name2...])= (SELECT

Oracle语法: 复制代码 代码如下:UPDATE updatedtable SET (col_name1[,col_name2...])= (SELECTcol_name1,[,col_name2...] FROM srctable [WHERE where_definition])

col_name1,[,col_name2...] FROM srctable [WHERE where_definition])

复制代码 代码如下:update landleveldata a set = (select b.gqdltks,b.bztks from gdqlpj b where a.GEO_Code=b.lxqdm)

Oracel 示例: update landleveldata a set (a.gqdltks, a.bztks)= (select b.gqdltks,

MySQL 多表更新方法

b.bztks from gdqlpj b where a.GEO_Code=b.lxqdm)

复制代码 代码如下:UPDATE table_references SET col_name1=expr1 [, col_name2=expr2 ...][WHERE where_definition]

MySQL语法: UPDATE table_references SET col_name1=expr1 [, col_name2=expr2 ...]

复制代码 代码如下:update landleveldata a, gdqlpj b set a.gqdltks= b.gqdltks, a.bztks=b.bztks where a.GEO_Code=b.lxqdm

[WHERE where_definition]

MySQL 示例: update landleveldata a, gdqlpj b set a.gqdltks= b.gqdltks, a.bztks=

b.bztks where a.GEO_Code=b.lxqdm

有A、B张表,其记录如下:

A表c1 c2--------------1 a12 a23 a38 a8

B表c1 c3--------------1 b12 b13 b310 b10

A.c1与B.c1相等,用一条sql语句,实现A.c2的值更新为B.c3------------------------UPDATE ASET A.c2 =B.c3from A ,Bwhere A.c1=B.c1

UPDATE ASET A.c2 =B.c3from A inner join B on A.c1=B.c1

注意:update后面是不能跟多表的,但跟在from子句后面

access

对多表更新UPDATE aSET a.t2 = b.t2FROM x1 a, x2 bWHERE a.t1 = b.t1

作一些试验:x1表: t1 t2 f_id a 1 b 2 c 3 a 4 b 5 c 6x2表 t1 t2 f_id a 7 b 8 c 9

试验1:UPDATE aSET a.t2 = b.t2FROM x1 a, x2 bWHERE a.t1 = b.t1结果:x1表中6行都被更新了。

试验2:UPDATE bSET b.t2 = a.t2FROM x1 a, x2 bWHERE a.t1 = b.t1结果为更新了三行,且数值为4,5,6。即用x1后面的三行去更新的。

试验3:UPDATE aSET a.t2 = b.t2FROM x1 a, x2 b结果六行全变9。

结论:用这种方式,两个表之间不是left join或right join 或者inner join,而是一种完

全连接的方式。对某列的更新操作,在该列值有多行

时,只有最后一行生效

上一篇:11在UltraLite数据库中提供了一些新特性,联系方式如您还需要了解SQL Anywhere 下一篇:mssql+php数据库操作类

更多阅读

本文章来介绍一篇SQLite,有一个函数jul

数据 2020-05-01
本文章来介绍一篇SQLiteDateTime日期时区问题解决方法和一些小方法的应用介绍,有需要的朋友可...
查看全文

mssql+php数据库操作类

数据 2020-05-01
mssql+php数据库操作类 class DbQueryForMssql {/** * select方法返回的最大记录数 */constMAX_ROW_NUM = 100000...
查看全文

代码如下,MySQL三种数据库教程中的用法

数据 2020-05-01
sql update多表联合更新的方法 SQL UPDATE实现多表更新 有些时候我们需要同时更新多个表中的数据...
查看全文

友情链接: 网站地图

Copyright © 2015-2019 http://www.koi-bumi.com. 韦德体育有限公司 版权所有