sql 如何删除表中的记录,从另一表中取条件

甲表中有表单号,开单时间等,乙表中有表单号,有明细,想删除乙表数据,是以甲表中的开单时间是2013年以前的删除。... 甲表中有表单号,开单时间等,乙表中有表单号,有明细,想删除乙表数据,是以甲表中的开单时间是2013年以前的删除。 展开
 我来答
shine戚七七
推荐于2016-11-06 · TA获得超过4.7万个赞
知道大有可为答主
回答量:2万
采纳率:75%
帮助的人:2723万
展开全部
sql中如果删除表中的记录,从另一表中取条件,那这两个表必须是主外键的关系:

比如:
create table AA
(
aaID int primary key,
aaDate varchar(50),
)

create table BB
(
bbID int primary key,
bbName varchar(50),
bbaa int foreign key references AA(aaID )
)
假如AA有10条数据 ,BB有10条数据 ,删除BB中bbaa的某一条数据
delete bb where bbID in (select aaID from AA where aaDate <'2013-01-01')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
悠悠汉魂
推荐于2018-03-13 · 超过17用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:38.8万
展开全部
delete 乙表 where 表单号 in (select 表单号 from 甲表 where 开单时间<'2013-01-01')
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
micro0369
2014-04-17 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4091万
展开全部
delect from 乙表  b
where exists(select 1 from 甲表 a where a.表单号 = b.表单号 and to_char(a.开单时间,'yyyy') < 2013)
追问
谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雨夜ぜ狂想5f5
2014-04-17 · TA获得超过178个赞
知道小有建树答主
回答量:476
采纳率:33%
帮助的人:260万
展开全部
假如甲表是sale_master 乙表是sale_detail
思路,先查出甲表2013年的单号
再把乙表中这些单号删掉
delete sale_detail
where id in (select id from sale_master where year(date)<2013 )
追问
谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f8447a9
2015-09-21 · 超过13用户采纳过TA的回答
知道答主
回答量:113
采纳率:0%
帮助的人:23.4万
展开全部
delete from 删除表 where 删除表字段 in(select 删除表中字面 from 另一个表)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式