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语句, 谢谢了 . 在线等`~~
展开
 我来答
lin67152
推荐于2017-11-25 · TA获得超过310个赞
知道小有建树答主
回答量:122
采纳率:100%
帮助的人:36.3万
展开全部
一个sql语句是没办法执行两个删除操作,如果你要实现上面的功能,有以下几个选择:
1.用外键关联删除,把B表的uid设成外键关联A表的ID,并关联删除操作
2.用存储过程,用事务来处理实现;

望采纳!
weidongzzz
2013-05-15 · TA获得超过1430个赞
知道小有建树答主
回答量:869
采纳率:25%
帮助的人:636万
展开全部

楼主,你好!我在自己的实体中演示了下,下面是代码:

--创建临时表
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

方法有很多种,仅供参考!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
C不是碳
2013-05-15 · TA获得超过454个赞
知道小有建树答主
回答量:776
采纳率:50%
帮助的人:446万
展开全部
如果你建立了关系的话,直接删除A表的数据,自动的会删除B表的数据的。
delete from A where datediff( dd,购买时间,getdate())>=1。
如果主键表没有数据,按照级联相关性,外键表中数据自动删除的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式