一个sql语句是没办法执行两个删除操作,如果你要实现上面的功能,有以下几个选择:
1.用外键关联删除,把B表的uid设成外键关联A表的ID,并关联删除操作
2.用存储过程,用事务来处理实现;
望采纳!
楼主,你好!我在自己的实体中演示了下,下面是代码:
--创建临时表
create table #TB_A(
FID int,
FName nvarchar(10),
FDate datetime
)
create table #TB_B(
FID int,
FUserID int,
FItemName nvarchar(20)
)
create table #TB_C(
FID int
)
--向临时表插入数据
insert into #TB_A values(1,'张三','2013-05-14')
insert into #TB_A values(2,'李四','2013-04-14')
insert into #TB_A values(3,'王五','2013-05-14')
insert into #TB_B values(1,2,'牙刷')
insert into #TB_B values(2,3,'肥皂')
--查询插入前的记录
select *
from #TB_A
select *
from #TB_B
--内连接查询符合日期相差一天的用户ID
insert into #TB_C
select t1.FID
from #TB_A t1
inner join #TB_B t2 on t1.FID = t2.FUserID
where DATEDIFF(DAY,t1.FDate,GETDATE()) = 1
--删除#TB_A、#TB_B的记录
delete
from #TB_A
where FID in (
select FID
from #TB_C
)
delete
from #TB_B
where FUserID in (
select FID
from #TB_C
)
--查询删除后的记录
select *
from #TB_A
select *
from #TB_B
--删除临时表
drop table #TB_A
drop table #TB_B
drop table #TB_C
方法有很多种,仅供参考!
如果你建立了关系的话,直接删除A表的数据,自动的会删除B表的数据的。
delete from A where datediff( dd,购买时间,getdate())>=1。
如果主键表没有数据,按照级联相关性,外键表中数据自动删除的。