SQL server 如何查找库中两个表中是不是包含相同的信息?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL server 如何查找库中两个表中是不是包含相同的信息?相关的知识,希望对你有一定的参考价值。
数据库中已创建两个表A和B,表中内容如下:
表A:
表B:
如何编写T-SQL语句,比较分析两个表,若B表Num列中的号码只要有一个在A表Num列中存在,则调用电脑里的C语言程序(或发出一个命令),并且清空表B。
若B表Num列中的号码在A表Num列中都不存在,则不实行任何操作。
其中的xtype = 'U' 的意思:xtype char(2) 对象类型。可以是下列对象类型中的一种:
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程 参考技术B SQL语句
查是否存在B表中num值是否存在A表
select * from B表 where num in (select distinct num from A表),
如果结果数据>0 执行C语句,并执行以下SQL语句
执行清空的语句 Delete from B表 where num in (select distinct num from A表)
希望能帮到你追问
如果结果数据>0 执行C语句 能更具体一点吗?
我执行了 select * from B表 where num in (select distinct num from A表) 后,结果栏给出了在表A中存在的表B中的一行
我想要的结果是:执行了 select * from B表 where num in (select distinct num from A表) 后,若B表Num列中的号码只要有一个在A表Num列中存在,会自动执行一条语句,这条语句的功能是发出一个命令。能帮帮我吗?
其实这个是程序控制模块。我对C语言了解不多。
有2种方式:
1、在前台程序控制(C语言中实现)
begin
Query.close
Query.clear
Query.Sql.add(select * from B表 where num in (select distinct num from A表) )
Query.open
if Query.记录数>0
执行你要的C语句,并执行删除。
end
2、在后台数据库中实现,把你C语言执行语句弄成可执行文件。
建立一个存储过程
declare @num int
set @num=(select count(*) from B表 where num in (select distinct num from A表))
if @num>0
begin
EXEC master..xp_cmdshell "路径\文件"
执行删除语句
end
谢谢你。我想再问你一个问题。
表A:
表B:
已知表B中的这条记录中的密码password和表A中第3条记录的password一样,现在想用T-SQL语句将表A中的Num列中第3条记录中的号码更新为表B中Num列中的这个号码。怎么写呢?亲,帮帮我,我多给你点财富值哈。
原理跟上一个问题类似
根据你提供的条件,TSQL语句大致如下:
update 表A set num=表B.num from 表B where 表A.password=表B.Password
另外:
你可以使用以下的语句查看是否结果正确,如果正确,再执行上面语句
select * from 表A,表B where 表A.password=表B.Password
以上是关于SQL server 如何查找库中两个表中是不是包含相同的信息?的主要内容,如果未能解决你的问题,请参考以下文章
SQL sever 2008 如何根据一个表中的两个时间计算出时间差