社区
MS-SQL Server
帖子详情
紧急!如何用一条SQL语句同时更新两张表中关联记录的字段
njtlxm
2004-10-14 10:07:55
两张表,有字段关联.现在需要用一条update语句同时分别更新表A中的字段1和表B中的字段2,赋予不同的值,这个语句怎么写?
...全文
1963
10
打赏
收藏
紧急!如何用一条SQL语句同时更新两张表中关联记录的字段
两张表,有字段关联.现在需要用一条update语句同时分别更新表A中的字段1和表B中的字段2,赋予不同的值,这个语句怎么写?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
swich
2004-10-14
打赏
举报
回复
接分
LJWS
2004-10-14
打赏
举报
回复
用触发器也可以呀
haitao5676
2004-10-14
打赏
举报
回复
直接用触发器不就行了吗?
sunshareforever
2004-10-14
打赏
举报
回复
update table set col=condision
update后接的就是要更新的表但只能更新一个表?
但要想实现你要的功能,建议写在触发器里。
njtlxm
2004-10-14
打赏
举报
回复
多谢各位,已经搞定.分开写吧,不想专牛角尖了
zjcxc
元老
2004-10-14
打赏
举报
回复
--如果可以的话,楼主可以创建一个视图,然后利用视图来实现同时更新字段1,字段2
--下面是示例
--示例数据
create table ta(关联字段 int,字段1 varchar(10))
insert ta select 1,'aa'
union all select 2,'bb'
create table tb(关联字段 int,字段2 varchar(10))
insert tb select 1,'AA'
union all select 2,'BB'
go
--创建视图
create view v_ta_tb
as
select a.*,b.字段2 from ta a,tb b where a.关联字段=b.关联字段
go
--创建视图的更新触发器
create trigger tr_update on v_ta_tb
instead of update
as
--更新表a
update a set 字段1=i.字段1
from ta a,inserted i
where a.关联字段=i.关联字段
--更新表b
update b set 字段2=i.字段2
from tb b,inserted i
where b.关联字段=i.关联字段
go
--更新
update v_ta_tb set 字段1='XX',字段2='YY'
go
--显示更新结果
select * from ta
select * from tb
go
--删除测试
drop table ta,tb
drop view v_ta_tb
/*--测试结果
关联字段 字段1
----------- ----------
1 XX
2 XX
(所影响的行数为 2 行)
关联字段 字段2
----------- ----------
1 YY
2 YY
(所影响的行数为 2 行)
--*/
zjcxc
元老
2004-10-14
打赏
举报
回复
--如果可以的话,楼主可以创建一个视图,然后利用视图来实现同时更新字段1,字段2
--下面是示例
--示例数据
create table ta(关联字段 int,字段1 varchar(10))
insert ta select 1,'aa'
union all select 2,'bb'
create table tb(关联字段 int,字段2 varchar(10))
insert tb select 1,'AA'
union all select 2,'BB'
go
--创建视图
create view v_ta_tb
as
select a.*,b.字段2 from ta a,tb b where a.关联字段=b.关联字段
go
--创建视图的更新触发器
create trigger tr_update on v_ta_tb
instead of update
as
--更新表a
update a set 字段1=i.字段1
from ta a,inserted i
where a.关联字段=i.关联字段
--更新表b
update b set 字段2=i.字段2
from tb b,inserted i
where b.关联字段=i.关联字段
go
--更新
update v_ta_tb set 字段1='XX',字段2='YY'
go
--显示更新结果
select * from ta
select * from tb
go
--删除测试
drop table ta,tb
drop view v_ta_tb
/*--测试结果
关联字段 字段1
----------- ----------
1 XX
2 XX
(所影响的行数为 2 行)
关联字段 字段2
----------- ----------
1 YY
2 YY
(所影响的行数为 2 行)
--*/
victorycyz
2004-10-14
打赏
举报
回复
这样算不算一条语句?
str="update a set col1=xxx from a join b on a.col0=b.col0 update b set col2=yyy from a join b on a.col0=b.col0"
conn.execute str
zjcxc
元老
2004-10-14
打赏
举报
回复
--SQL不支持这种更新
--可以用两句来更新
update a set 字段1='xx'
from a,b where a.关联字段=b.关联字段
update b set 字段2='xx'
from a,b where a.关联字段=b.关联字段
haoK
2004-10-14
打赏
举报
回复
不行吧,只能分两次更新,
如果更新之后会改变关联字段的值
可以先把关联字段缓存到临时表,再分别更新两个表
SQL语句
从入门到精通迅速提升篇视频课程(Oracle零基础版)
这是一套体系化的
SQL语句
教程,按照从浅入深的模式讲解工作中常用的SQL写法、函数、
字段
处理技术等。使大家快速掌握SQL的基础及部分高阶知识,进而熟练的对数据库表、
字段
进行各种查询、创建、
更新
、删除操作。 &...
数据库表设计(一对多,多对多)
目录 一、总结 二、数据表设计(一对多,多对多) 三、数据库怎么设计多对多的数据表 回到顶部 一、总结 1、项目中小组和主题之间是多对多的 2、可以将常用信息和不常用信息分成两个表来优化数据库 2、一对多的话:在多的里面建立一的
字段
,比如母亲(一)和孩子(多),在孩子里面添加母亲id 3、多对多的话:比如老师和学生,建立一个关系表,表id,老师id,学生id即可...
SQL语句
大全,你不会写的SQL可能都在这里
你知道的越多,不知道的就越多,业余的像一棵小草!你来,我们一起精进!你不来,我和你的竞争对手一起精进!编辑:业余草推荐:https://www.xttblog.com/?p=5068这篇...
sql慢查询解决方案
① 使用force index:分析不同索引的查询条数,比如用索引a需要查询5000条、索引b需要查询1000条,此时明显选索引b查询效率更高,但是mysql优化器选择了索引a(因为优化器还会考虑回表、排序等综合因素导致选错),我们需要 force index与原sql做对比,根据结果考虑是否需要使用force index。③ 由于字符集不同(utf8mb4),导致表连接查询的时候用不上
关联
字段
索引,需要把转化放在条件=的后面,就可以使用索引。1、针对索引没有设计好的解决方案:给表重新加索引重新加索引。
SQL优化13连问,收藏好!
可以根据查询语句的条件,增加相应的索引,从而加快查询速度。有些
SQL语句
本身可能存在一些问题,如join操作过于频繁,使用了不必要的子查询等,这些都会导致查询效率低下。查询执行时间过长有可能是由于锁的问题导致的,需要分析查询语句中是否存在锁的问题,如果存在锁的问题,可以考虑增加锁的并发度,从而提高查询效率。在编写SQL查询语句时,要尽可能地简单明了,避免复杂的查询语句,同时也要避免一些不必要的查询操作。const:通过一次索引就能找到数据,一般用于主键或唯一索引作为条件,这类扫描效率极高,,速度非常快。
MS-SQL Server
34,590
社区成员
254,589
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章