当前位置:首页 » 编程语言 » sql关联表更新

sql关联表更新

发布时间: 2022-04-28 07:49:49

㈠ 请教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、【如果存在测试临时表,则先删除,便于重复执行SQL】:

IF OBJECT_ID('tempdb..#SourceTable1') IS NOT NULL DROP TABLE #SourceTable1;

IF OBJECT_ID('tempdb..#SourceTable2') IS NOT NULL DROP TABLE #SourceTable2;

IF OBJECT_ID('tempdb..#UpdateTable') IS NOT NULL DROP TABLE #UpdateTable;

(2)sql关联表更新扩展阅读

SQL Aggregate 函数

SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

有用的 Aggregate 函数:

1、AVG() - 返回平均值

2、COUNT() - 返回行数

3、FIRST() - 返回第一个记录的值

4、LAST() - 返回最后一个记录的值

5、MAX() - 返回最大值

6、MIN() - 返回最小值

7、SUM() - 返回总和

SQL Scalar 函数

SQL Scalar 函数基于输入值,返回一个单一的值。

有用的 Scalar 函数:

1、UCASE() - 将某个字段转换为大写

2、LCASE() - 将某个字段转换为小写

3、MID() - 从某个文本字段提取字符

4、LEN() - 返回某个文本字段的长度

5、ROUND() - 对某个数值字段进行指定小数位数的四舍五入

6、NOW() - 返回当前的系统日期和时间

7、FORMAT() - 格式化某个字段的显示方式

㈢ 在sql里面如何实现关联表数据的更新

1.建个触发器
2.建立个物化试图(速度快)

CREATE MATERIALIZED VIEW LOG ON name--建立物化视图日志保存在特定的表空间
tablespace users; --指定表空间

drop materialized view name;
create materialized view name--创建物化试图
refresh fast
on commit --在提交后立即刷新
as
select
A.*
from tablename A

㈣ sql 几张表互相关联 更改一张数据库信息 相应的更新相关联的数据

oracle下:
oracle只有级联删除,没有级联更新(其实是有的,只是没有on update cascade),所以要实现级联更新有两种方法:
一、在约束中定义延迟更新:alter table child_table
add constraint fk_child_parent
foreign key (id)
references parent_table (id)
initially deferred deferrable;
-- initially deferred deferrable; 这是延迟oracle的一致性检查,通过这个我们可以分别更新主表和子表,然后再提交,这样就能验证通过了,有点麻烦,呵呵,还是用触发器吧
二、通过触发器实现:
CREATE OR REPLACE TRIGGER ID_TRG AFTER UPDATE ON Section FOR EACH ROW
BEGIN
UPDATE Employee SET 部门=:NEW.部门WHERE 部门=:OLD.部门;
END;

㈤ SQLSERVER 多表关联如何更新

update 表C

set 表C.c3=表B.b3
from 表C
where 表C.c1=表A.a2 and 表C.c2=表B.b2
您说的还没搞明白,从语法上讲应该是这样的,不知道行不行,只做过2个表之间关联更新的,您这个要3个表,而且B表和 C表的关联有没有呢?

㈥ sql可以两个表一起更新数据吗

如果两个表有关联的话是可以的,比如A表的id和b表的b_id外键关系就可以
update a left join b on a.id = b.b_id set a.name = '',b.name='' (where条件)

㈦ SQL Server数据库多表关联如何更新

一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新。而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据。我们先来讨论根据其他表数据更新你要更新的表

一、MS SQL Server 多表关联更新
sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式 中引用要更新的表以外的其它数据。
一般形式:
update A SET 字段1=B表字段表达式, 字段2=B表字段表达式 from B WHERE 逻辑表达式
例如:
UPDATE dbo.Table2
SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB
FROM dbo.Table2
INNER JOIN dbo.Table1
ON (dbo.Table2.ColA = dbo.Table1.ColA);

实际更新的操作是在要更新的表上进行的,而不是在from子句所形成的新的结果集上进行的

㈧ sql怎样把一个表的数据更新到另一个表

如果都是SQL的数据库的话,在第二步的时候就默认选择SQL Server 的Microsoft OLE DB提供程序 就可以了。

1、打开企业管理器,打开要导入数据的数据库,在表上按右键,所有任务-->导入数据,弹出DTS导入/导出向导,按 下一步 ;

2、选择数据源 Microsoft Excel 97-2000,文件名 选择要导入的xls文件,按 下一步;

3、选择目的 用于SQL Server 的Microsoft OLE DB提供程序,服务器选择本地(如果是本地数据库的话,如 VVV),使用SQL Server身份验证,用户名sa,密码为空,数据库选择要导入数据的数据库(如 client),按 下一步;

4、选择 用一条查询指定要传输的数据,按 下一步;

5、按 查询生成器,在源表列表中,有要导入的xls文件的列,将各列加入到右边的 选中的列 列表中,这一步一定要注意,加入列的顺序一定要与数据库中字段定义的顺序相同,否则将会出错,按 下一步;

6、选择要对数据进行排列的顺序,在这一步中选择的列就是在查询语句中 order by 后面所跟的列,按 下一步;

7、如果要全部导入,则选择 全部行,按 下一步;

8、则会看到根据前面的操作生成的查询语句,确认无误后,按 下一步;

9、会看到 表/工作表/Excel命名区域 列表,在 目的 列,选择要导入数据的那个表,按 下一步;

10、选择 立即运行,按 下一步;

11、会看到整个操作的摘要,按 完成 即可。

㈨ 如何实现MSSQL数据库多表关联更新

--你要先在测试库测试哦

--建表
createtablet_bd_item_info
(
item_noVarchar(20),
item_subnoVarchar(20)
)

--测试数据
insertintot_bd_item_infovalues('12345678','98765432')
insertintot_bd_item_infovalues('123456789012','12345678')
insertintot_bd_item_infovalues('1234567801234','98976543')

--得到需要替换的item_no和item_subno
Select*into#TmpFrom
(
Select*,ROW_NUMBER()over(partitionbyitem_subnoorderbyitem_no)Asid
Fromt_bd_item_infoA
Wherelen(item_no)in(12,13)andLEN(item_subno)=8
Andnotexists(Select*Fromt_bd_item_infoBwhereB.item_no=A.item_subno)
)SwhereID=1

--替换(包含item_no的所有表都替换)
Execsp_MSforeachtable@command1="Update?Setitem_no=B.item_subnoFrom?Ainnerjoin#TmpBonA.item_no=B.item_no",@whereand="Ando.namein(selectdistinctobject_name(object_id)fromsys.columnswherename='item_no')"

--删除临时表
DropTable#Tmp

㈩ sql两个表之间内容更新问题

sql两个表之间内容更新问题
当用一个表中的数据来更新另一个表中的数据,T-SQL提供多种写法(下面列出了二种),但建议用第一种写法,虽然传统,但结构清晰。
并且要注意,当用一个表中的数据来更新另一个表中的数据时,二个表一定要有关联!

热点内容
安卓游戏旧版本从哪个软件下载 发布:2025-05-16 00:00:20 浏览:328
连接聚类算法 发布:2025-05-15 23:55:09 浏览:977
工资算法单休 发布:2025-05-15 23:52:30 浏览:818
超凡先锋配置不行怎么办 发布:2025-05-15 23:27:54 浏览:531
win7取消加密 发布:2025-05-15 23:26:37 浏览:471
不用internet打开ftp 发布:2025-05-15 23:06:00 浏览:153
sql字符串取数字 发布:2025-05-15 22:57:45 浏览:124
推荐编程课 发布:2025-05-15 22:34:12 浏览:618
表拒绝访问 发布:2025-05-15 22:29:37 浏览:978
电脑怎样解压文件 发布:2025-05-15 22:25:32 浏览:439