紧急求助两个SQL删除语句
时间:2011-12-27
来源:互联网
现有如下下面两个
d_dapiaojl(订单表)
订单号 订单总吨数 已发吨数 剩余吨数
f1 f2 f3 f4
201112001 100 100 0
201112002 50 50 0
201112003 80 80 0
201112004 50 50 0
201112005 60 40 20
d_zhongchej(出库单表)(有些出库单需要两张订单合并发货)
出库单号 出库总数 订单号1 订单号1吨数 订单号2 订单号2吨数
f1 f2 f3 f4 f5 f6
0001 20 201112001 20
0002 80 201112001 80
0003 20 201112002 20
0004 80 201112002 30 201112003 50
0005 30 201112003 30
0006 20 201112004 20
0007 60 201112004 30 201112005 30
0008 10 201112005 10
现在希望删除d_dapiaojl(订单表)和 d_zhongchej(出库单表)的部分记录
要求
1、d_dapiaojl(订单表)已发完货即f4=0
2、d_zhongchej(出库单表)对应的记录也要删除,但要考虑订单号2不为空时,对应订单没发完的情况不能删除
如0007因201112005也发货30吨,且201112005没发货完毕所以不能删除0007,所以201112004也不能删除
删除后的记录如下
d_dapiaojl(订单表)
订单号 订单总吨数 已发吨数 剩余吨数
f1 f2 f3 f4
201112004 50 50 0
201112005 60 40 20
d_zhongchej(出库单表)
出库单号 出库总数 订单号1 订单号1吨数 订单号2 订单号2吨数
f1 f2 f3 f4 f5 f6
0006 20 201112004 20
0007 60 201112004 30 201112005 30
0008 10 201112005 10
求上述两个删除语句如何写
d_dapiaojl(订单表)
订单号 订单总吨数 已发吨数 剩余吨数
f1 f2 f3 f4
201112001 100 100 0
201112002 50 50 0
201112003 80 80 0
201112004 50 50 0
201112005 60 40 20
d_zhongchej(出库单表)(有些出库单需要两张订单合并发货)
出库单号 出库总数 订单号1 订单号1吨数 订单号2 订单号2吨数
f1 f2 f3 f4 f5 f6
0001 20 201112001 20
0002 80 201112001 80
0003 20 201112002 20
0004 80 201112002 30 201112003 50
0005 30 201112003 30
0006 20 201112004 20
0007 60 201112004 30 201112005 30
0008 10 201112005 10
现在希望删除d_dapiaojl(订单表)和 d_zhongchej(出库单表)的部分记录
要求
1、d_dapiaojl(订单表)已发完货即f4=0
2、d_zhongchej(出库单表)对应的记录也要删除,但要考虑订单号2不为空时,对应订单没发完的情况不能删除
如0007因201112005也发货30吨,且201112005没发货完毕所以不能删除0007,所以201112004也不能删除
删除后的记录如下
d_dapiaojl(订单表)
订单号 订单总吨数 已发吨数 剩余吨数
f1 f2 f3 f4
201112004 50 50 0
201112005 60 40 20
d_zhongchej(出库单表)
出库单号 出库总数 订单号1 订单号1吨数 订单号2 订单号2吨数
f1 f2 f3 f4 f5 f6
0006 20 201112004 20
0007 60 201112004 30 201112005 30
0008 10 201112005 10
求上述两个删除语句如何写
作者: lgtlgt 发布时间: 2011-12-27
晕 力气活。
作者: fredrickhu 发布时间: 2011-12-27
SQL code
delete a from d_zhongchej a inner join d_dapiaojl b on a.订单号1=b.订单号 inner join d_dapiaijl c on a.订单号2=c.订单号 where b.剩余吨数=0 and c.剩余吨数=0 go delete from d_dapiaojl a where not exists(select 1 from d_zhongchej where 订单号1=a.订单号) and not exists(select 1 from d_zhongchej where 订单号2=a.订单号) go
作者: qianjin036a 发布时间: 2011-12-27
引用 3 楼 qianjin036a 的回复:
SQL code
delete a from d_zhongchej a inner join d_dapiaojl b on a.订单号1=b.订单号 inner join d_dapiaijl c on a.订单号2=c.订单号
where b.剩余吨数=0 and c.剩余吨数=0
go
delete from d_dapiaojl a where not exists(select 1……
SQL code
delete a from d_zhongchej a inner join d_dapiaojl b on a.订单号1=b.订单号 inner join d_dapiaijl c on a.订单号2=c.订单号
where b.剩余吨数=0 and c.剩余吨数=0
go
delete from d_dapiaojl a where not exists(select 1……
力气活
作者: TravyLee 发布时间: 2011-12-27
纠正:
SQL code
SQL code
create table d_dapiaojl(订单号 varchar(15),订单总吨数 int,已发吨数 int,剩余吨数 int) insert into d_dapiaojl select '201112001',100,100,0 insert into d_dapiaojl select '201112002',50,50,0 insert into d_dapiaojl select '201112003',80,80,0 insert into d_dapiaojl select '201112004',50,50,0 insert into d_dapiaojl select '201112005',60,40,20 create table d_zhongchej(出库单号 varchar(10),出库总数 int,订单号1 varchar(15),订单号1吨数 int,订单号2 varchar(15),订单号2吨数 int) insert into d_zhongchej select '0001',20,'201112001',20,null,null insert into d_zhongchej select '0002',80,'201112001',80,null,null insert into d_zhongchej select '0003',20,'201112002',20,null,null insert into d_zhongchej select '0004',80,'201112002',30,'201112003',50 insert into d_zhongchej select '0005',30,'201112003',30,null,null insert into d_zhongchej select '0006',20,'201112004',20,null,null insert into d_zhongchej select '0007',60,'201112004',30,'201112005',30 insert into d_zhongchej select '0008',10,'201112005',10,null,null go delete a from d_dapiaojl a where 剩余吨数=0 and not exists( select * from d_zhongchej where 订单号1=a.订单号 and 订单号2 in(select 订单号 from d_dapiaojl where 剩余吨数>0) or 订单号2=a.订单号 and 订单号1 in(select 订单号 from d_dapiaojl where 剩余吨数>0) ) go delete a from d_zhongchej a where not exists(select 1 from d_dapiaojl where 订单号=a.订单号1 or 订单号=a.订单号2) /* 出库单号 出库总数 订单号1 订单号1吨数 订单号2 订单号2吨数 ---------- ----------- --------------- ----------- --------------- ----------- 0006 20 201112004 20 NULL NULL 0007 60 201112004 30 201112005 30 0008 10 201112005 10 NULL NULL (3 行受影响) 订单号 订单总吨数 已发吨数 剩余吨数 --------------- ----------- ----------- ----------- 201112004 50 50 0 201112005 60 40 20 (2 行受影响) */ go select * from d_zhongchej select * from d_dapiaojl go drop table d_dapiaojl,d_zhongchej
作者: qianjin036a 发布时间: 2011-12-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28