SQL 语句删除问题同时删除两个表内关联的数据 5
A表ID姓名购买时间1张三2012-05-142李四2012-04-143王五2011-05-14B表IDUid物品名12牙刷23肥皂删除条件:从A表查询购买时间于现在时...
A表
ID 姓名 购买时间
1 张三 2012-05-14
2 李四 2012-04-14
3 王五 2011-05-14
B表
ID Uid 物品名
1 2 牙刷
2 3 肥皂
删除条件:
从A表 查询 购买时间 于现在时间 超过 1天 的记录
删除 该记录 以及同时删除 B表 相关联 数据
注 : B表的 UID 是A表的ID
求 SQL语句, 谢谢了 . 在线等`~~ 展开
ID 姓名 购买时间
1 张三 2012-05-14
2 李四 2012-04-14
3 王五 2011-05-14
B表
ID Uid 物品名
1 2 牙刷
2 3 肥皂
删除条件:
从A表 查询 购买时间 于现在时间 超过 1天 的记录
删除 该记录 以及同时删除 B表 相关联 数据
注 : B表的 UID 是A表的ID
求 SQL语句, 谢谢了 . 在线等`~~ 展开
3个回答
展开全部
楼主,你好!我在自己的实体中演示了下,下面是代码:
--创建临时表
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。
如果主键表没有数据,按照级联相关性,外键表中数据自动删除的。
delete from A where datediff( dd,购买时间,getdate())>=1。
如果主键表没有数据,按照级联相关性,外键表中数据自动删除的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |