数据库中已创建两个表A和B,表中内容如下:
表A:
表B:
如何编写T-SQL语句,比较分析两个表,若B表Num列中的号码只要有一个在A表Num列中存在,则调用电脑里的C语言程序(或发出一个命令),并且清空表B。
若B表Num列中的号码在A表Num列中都不存在,则不实行任何操作。
如果结果数据>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