sql关联表update
⑴ update sql 两个关联的表
一、当用一个表中的数据来更新另一个表中的数据,T-SQL提供多种写法(下面列出了二种),但建议用第一种写法,虽然传统,但结构清晰。
并且要注意,当用一个表中的数据来更新另一个表中的数据时,二个表一定要有关联!
1.
update t1
set t1.c2 = t2.c2
fro m t2
where t1.c1 = t2.c1
2.
Update t1
set t1.c2 = t2.c2
fro m t1 inner join t2
on t1.c1 = t2.c1
二、FROM 子句中指定的表的别名不能作为 SET column_name 子句中被修改字段的限定符使用。
例如,下面的内容无效:
UPDATE titles
SET t.ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
若要使上例合法,请从列名中删除别名 t 或使用本身的表名。
1.
UPDATE titles
SET ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
2.
UPDATE titles
SET titles.ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
⑵ 请教sql语句 如何实现关联表字段更新
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 a.gqdltks=b.gqdltks,a.bztks=b.bztks from landleveldata a,gdqlpj b where a.GEO_Code=b.lxqdm
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)
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
⑶ SQL update 的更新值来源于另外一个表,如何实现
1、创建两个测试表,
createtabletest_up_a(idnumber,valuevarchar2(100));
createtabletest_up_b(idnumber,valuevarchar2(100));
2、分别往两个表中插入数据;
insertintotest_up_avalues(1,'A1');
insertintotest_up_avalues(2,'A2');
insertintotest_up_avalues(3,'A3');
insertintotest_up_avalues(4,'A4');
insertintotest_up_avalues(5,'A5');
insertintotest_up_avalues(6,'A6');
insertintotest_up_bvalues(1,'BBBB1');
insertintotest_up_bvalues(2,'BBBB2');
insertintotest_up_bvalues(5,'BBBB5');
commit;
3、分别查看两个表中数据;
select'TBL_A',t.*fromTEST_UP_At
unionall
select'TBL_B',t.*fromTEST_UP_Bt
4、执行更新脚本,可以发现TEST_UP_A.VALUE值已变化;
updateTEST_UP_At
sett.value=
(selectb.value
fromTEST_UP_Bb
wheret.id=b.id
andrownum=1)
⑷ SQL两个关联表update select查询结果
updatepriceimacsetpriceimac.数量=t.totalCuntfrom(selecta.imac项目,a.累计+b.数量astotalCuntfrompriceimaca,(selectIMAC,sum(convert(int,数量))数量fromtemp1whereusername='aaa'groupbyimac)bwherea.imac项目=b.imac)ast
⑸ SQL 中UPDATE用法
Update是一个数据库SQL语法用语,用途是更新表中原有数据,单独使用时使用where匹配字段。
语法为:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
例如:Update table_name Set column_name = new_value Where column_name = some_value
(5)sql关联表update扩展阅读
update使用注意事项:
1、sp_updatestats可以更新统计信息到最新。
2、低内存会导致未被客户端连接的查询计划被清除。
3、修改表结构,修改索引后,查询计划会被清除,可以再修改后运行几遍查询。
4、使用update时候,order by 会影响查询速度,where中使用函数则会调用筛选器进行扫描,扫描表要尽量避免。
参考资料来源:网络—update
⑹ 多表关联UPDATE语句怎么写呀
update A,B set A.sj1=B.sj2
where
a.hm1=b.hm1
新手,不知道这样写对不对。
⑺ 数据库:更新表需关联到其它表的update语句怎么写
update 用户余额表 a,银行货币表 b,银行表 c
set a.余额=0
where a.b_id=b.id and b.银行id=a.银行id and a.银行名='a';
⑻ SQL语句UPDATE 多表关联的
语句没有语法错误,你用的什么数据库?
有些很早期的数据库,或者是很简单的数据库是不支持多表查询的,比如access97等
你这个在执行的时候有报错吗,你能把执行后的日志打出来吗?