1、不同数据库 update 实现多表更新在开发中,数据库来回换,而有些关键性的语法又各不相同,这是一件让开发人员很头痛的事情.本文总结了 Update 语句更新多表时在SQLServer,Oracle,MySQL 三种数据库中的用法.我也试了 SQLite 数据库,都没成功,不知是不支持多表更新还是咋的. 在本例中: 我们要用表 gdqlpj 中的gqdltks,bztks 字段数据去更新 landleveldata 中的同字段名的数据,条件是当landleveldata 中的 GEO_Code 字段值与 gdqlpj 中的 lxqdm 字段值相等时进行更新.SQL Server 语法:UPDA
2、TE table_name WITH ( .n ) | view_name | rowset_function_limited SET column_name = expression | DEFAULT | NULL | variable = expression | variable = column = expression ,.n FROM ,.n WHERE | WHERE CURRENT OF GLOBAL cursor_name | cursor_variable_name OPTION ( ,.n ) SQL Server 示例: update a set a.gqdltks=
3、b.gqdltks,a.bztks=b.bztks from landleveldata a,gdqlpj b where a.GEO_Code=b.lxqdmOracle 语法: 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 gdq
4、lpj b where a.GEO_Code=b.lxqdm)MySQL 语法: UPDATE table_references SET col_name1=expr1 , col_name2=expr2 . WHERE where_definitionMySQL 示例: 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 a8B 表c1 c3-1 b12 b13 b310 b10A.c1 与 B.c1 相等,用一条 sql 语句,实现 A.c2 的值更新为 B.c3-UPDATE ASET A.c2 =B.c3from A ,Bwhere A.c1=B.c1UPDATE ASET A.c2 =B.c3from A inner join B on A.c1=B.c1 注意:update 后面是不能跟多表的,但跟在 from 子句后面。