oracle 两表条件查询
有表ABidmidname1111a2111f3122B4122h3C4D要求表A中M等于11表B的数据,ID是关联的先显示,,然后在进行删除要求表B显示1a1f2B2h...
有表 A B
id m id name
1 11 1 a
2 11 1 f
3 12 2 B
4 12 2 h
3 C
4 D
要求 表A 中M 等于 11 表B 的数据 , ID 是关联的
先显示,,然后在进行删除
要求表B 显示
1 a
1 f
2 B
2 h
最后删除表B 中的这些数据 展开
id m id name
1 11 1 a
2 11 1 f
3 12 2 B
4 12 2 h
3 C
4 D
要求 表A 中M 等于 11 表B 的数据 , ID 是关联的
先显示,,然后在进行删除
要求表B 显示
1 a
1 f
2 B
2 h
最后删除表B 中的这些数据 展开
展开全部
SELECT B.ID,B.NAME
FROM A,B
WHERE A.ID=B.ID
AND A.ID=11;也可以写成EXISTS或者IN的形式:
DELETE FROM B WHERE EXISTS (SELECT 1 FROM A WHERE A.ID=B.ID AND A.M=11 )
另外楼上哥们说的别用IN,IN会引起全表扫描,这话在下不敢苟同。而且在类似
SELECT * FROM A WHERE EXISTS (SELECT 1 FROM B WHERE A.ID=B.ID )的语句中,两表的ID字段都建立了索引,当A表的数据量远远大于B表数据量的时候,(比如A表上千万,B表几十万)上面的语句会非常慢,虽然ORACLE的解释计划中COST的数量差不多,但是事实的数据提取工作中,IN会比EXISTS快非常多。
FROM A,B
WHERE A.ID=B.ID
AND A.ID=11;也可以写成EXISTS或者IN的形式:
DELETE FROM B WHERE EXISTS (SELECT 1 FROM A WHERE A.ID=B.ID AND A.M=11 )
另外楼上哥们说的别用IN,IN会引起全表扫描,这话在下不敢苟同。而且在类似
SELECT * FROM A WHERE EXISTS (SELECT 1 FROM B WHERE A.ID=B.ID )的语句中,两表的ID字段都建立了索引,当A表的数据量远远大于B表数据量的时候,(比如A表上千万,B表几十万)上面的语句会非常慢,虽然ORACLE的解释计划中COST的数量差不多,但是事实的数据提取工作中,IN会比EXISTS快非常多。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
ZESTRON
2024-09-04 广告
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸...
点击进入详情页
本回答由ZESTRON提供
展开全部
显示:
select * from b where b.id in(select id from a where a.m=11) order by id,name;
删除:
delete from b where b.id in(select id from a where a.m=11);
要一句sql既要显示又要删除,那是不可能的!
select * from b where b.id in(select id from a where a.m=11) order by id,name;
删除:
delete from b where b.id in(select id from a where a.m=11);
要一句sql既要显示又要删除,那是不可能的!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最好不要用IN操作,会引起全表扫描,如果数据量大,查询速度很慢。
SELECT * FROM B WHERE EXISTS(SELECT 1 FROM A WHERE A.ID = B.ID AND A.M ='11') ORDER BY B.ID ASC;
删除的是:
DELETE FROM B WHERE EXISTS(SELECT 1 FROM A WHERE A.ID = B.ID AND A.M = '11')
SELECT * FROM B WHERE EXISTS(SELECT 1 FROM A WHERE A.ID = B.ID AND A.M ='11') ORDER BY B.ID ASC;
删除的是:
DELETE FROM B WHERE EXISTS(SELECT 1 FROM A WHERE A.ID = B.ID AND A.M = '11')
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
查:select * from b where b.id in (select id from a where a.m=11) order by id,name;
删:delete from b where b.id in (select id from a where a.m=11);
删:delete from b where b.id in (select id from a where a.m=11);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询