sql 如何删除表中的记录,从另一表中取条件
甲表中有表单号,开单时间等,乙表中有表单号,有明细,想删除乙表数据,是以甲表中的开单时间是2013年以前的删除。...
甲表中有表单号,开单时间等,乙表中有表单号,有明细,想删除乙表数据,是以甲表中的开单时间是2013年以前的删除。
展开
6个回答
展开全部
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')
比如:
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')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
delete 乙表 where 表单号 in (select 表单号 from 甲表 where 开单时间<'2013-01-01')
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
delect from 乙表 b
where exists(select 1 from 甲表 a where a.表单号 = b.表单号 and to_char(a.开单时间,'yyyy') < 2013)
追问
谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
假如甲表是sale_master 乙表是sale_detail
思路,先查出甲表2013年的单号
再把乙表中这些单号删掉
delete sale_detail
where id in (select id from sale_master where year(date)<2013 )
思路,先查出甲表2013年的单号
再把乙表中这些单号删掉
delete sale_detail
where id in (select id from sale_master where year(date)<2013 )
追问
谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
delete from 删除表 where 删除表字段 in(select 删除表中字面 from 另一个表)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询