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 有没有方法能实现,只是更改不同的,不要更改相同的?谢谢~,触发器也可以,怎么写,大家指导下?最好是存储过程,谢谢~~~,好的话,我会追加~~~

CREATE TRIGGER [dbo].UpdateDepartmentid
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来比对,两表之间的差异数据?

参考技术A Oracle里边可以这样:
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表中的字段更新成相对应的值。的主要内容,如果未能解决你的问题,请参考以下文章

怎样用Sql语句判断一张表中的两条数据相同

如何用SQL语句查询两张表中的相同字段数据

[原]用SQL比较两张结构完全相同的表数据

怎么用SQL比对两表

sql将一个表中的所有数据更新到另一个表中

如何对比两个相同数据库表的不同