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

甲表中有表单号,开单时间等,乙表中有表单号,有明细,想删除乙表数据,是以甲表中的开单时间是2013年以前的删除。

第1个回答  推荐于2016-11-06
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')
第2个回答  推荐于2018-03-13
delete 乙表 where 表单号 in (select 表单号 from 甲表 where 开单时间<'2013-01-01')本回答被提问者和网友采纳
第3个回答  2014-04-17
delect from 乙表  b
where exists(select 1 from 甲表 a where a.表单号 = b.表单号 and to_char(a.开单时间,'yyyy') < 2013)

追问

谢谢

第4个回答  2014-04-17
假如甲表是sale_master 乙表是sale_detail
思路,先查出甲表2013年的单号
再把乙表中这些单号删掉
delete sale_detail
where id in (select id from sale_master where year(date)<2013 )追问

谢谢

第5个回答  2015-09-21
delete from 删除表 where 删除表字段 in(select 删除表中字面 from 另一个表)
相似回答