sql 两张结构相同的表,当A表中的某个字段发生变化时,B表中的字段更新成相对应的值。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 两张结构相同的表,当A表中的某个字段发生变化时,B表中的字段更新成相对应的值。相关的知识,希望对你有一定的参考价值。
如题,用触发器也可以,上图比较明显,请看图:
A表B表的结构和A表一样,如图所示,如果A表的某个人部门发生变化,那么B表的部门也更着变化,这个语句update zdyemployee set depid= e.depid ,depname=e.depname from eHR_DB_Employee e join zdyemployee z on z.empid=e.empid 能够实现将部门和部门编码字段重新update一下,但是我不想弄成每次都全部update 有没有方法能实现,只是更改不同的,不要更改相同的?谢谢~,触发器也可以,怎么写,大家指导下?最好是存储过程,谢谢~~~,好的话,我会追加~~~
ON [dbo].[zdyemployee]
AFTER Update
AS
BEGIN
update zdyemployee
set depid= e.depid ,depname=e.depname
from Update e INNER join zdyemployee z
on z.empid=e.empid
END
CREATE PROCEDURE sp_UpdateDepartmentid
@empid int
AS
update zdyemployee
set depid= e.depid ,depname=e.depname
from from eHR_DB_Employee e INNER join zdyemployee z
on z.empid=@empid
试试追问
谢谢你的答案,忘了说了。。。。 eHR_DB_Employee 是一个视图。。。。我发现表上创建update触发器可以实现,但是在视图上创建update触发器对另一张表进行更新,不行。。。。。。能否帮忙看下,谢谢~~
追答这个视图触发器和表触发器没有什么区别的哈!你注意下更新呢
追问我测试过了 在视图上建触发器不成功 在表上是成功的
追答你就看看能否换成表就是了嘛
追问........太麻烦了。。。。
参考技术A 还是自己看看触发器吧 ,搜索关键字: 触发器 同步更新 参考技术B 这个嘛 很简单追问。。。。。。然后呢?
怎么用SQL比对两表
表1,A字段包含B字段
A B
111 123
111 235
表2,C字段包含D字段
C D
111 123
如何用SQL来比对,两表之间的差异数据?
select * from 表1 minus select * from 表2
SqlServer2005中可以这样:
select * from 表1 except select * from 表2
sqlserver2000中可以这样:
select * from 表1 where not exists (select 1 from 表2 where C=表1.A and D=表1.B)
sqlserver2000里边的这种方式在Oracle和sqlserver2005中也是可行的本回答被提问者采纳 参考技术B 两表字段类型一样~
思路:先把两表的数据合并~,然后把重复的数据剔除掉,剩下的就是两表的差异数据了!
-----实现语句----------------
Select * from (select * from A
Union all
Select * from B) T Group by A,B having count(*)=1 参考技术C --表结构:
CREATE TABLE t1_old (
id int NOT NULL,
log_time DATETIME DEFAULT '') ;
CREATE TABLE t1_new (
id int NOT NULL,
log_time DATETIME DEFAULT '') ;--两表的记录数都为100条。select count(*) from t1_old;select count(*) from t1_new; 参考技术D oracle中:
select * from 表1
minus
select * from 表2
SqlServer2000中:
select * from 表1 where not exists(
select * from 表2 where 表2.C=表1.A and 表2.D=表1.B)
---
以上,希望对你有所帮助。 第5个回答 2019-06-02 sqlserver写法,其他数据库可能略有不同,如果其他数据库请说明
select a.发票号,sum(isnull(b.金额,0)) 汇总表金额,sum(c.总金额) 明细表金额
from
(select 发票号 from 汇总表
union
select 发票号 from 明细表) a
left join 汇总表 b on a.发票号=b.发票号
left join (select 发票号,sum(金额) 总金额 from 明细表 group by 发票号) c on a.发票号=c.发票号
group by a.发票号
以上是关于sql 两张结构相同的表,当A表中的某个字段发生变化时,B表中的字段更新成相对应的值。的主要内容,如果未能解决你的问题,请参考以下文章