重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5237|回复: 2
打印 上一主题 下一主题

请问教一下:这两句sql 有什么区别?

[复制链接]
跳转到指定楼层
楼主
发表于 2012-10-14 10:53:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DELETE FROM job_history j WHERE (employee_id, job_id) = ALL (SELECT employee_id, job_id
FROM employees e WHERE j.employee_id = e.employee_id and j.job_id = e.job_id )
 

DELETE FROM job_history j WHERE (employee_id, job_id) = (SELECT employee_id, job_id FROM
employees e WHERE j.employee_id = e.employee_id and j.job_id = e.job_id )

请问一下:上面这两句sql 有什么区别?为什么第1条sql比第二条sql删除的记录要多呢?
谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

沙发
 楼主| 发表于 2012-10-14 10:55:05 | 只看该作者
当 ALL (SELECT employee_id, job_id
FROM employees e WHERE j.employee_id = e.employee_id and j.job_id = e.job_id )
这个查询结果 是 no row seleced
外层的sql 把 job_history 表的所有记录都查询出来了。为什么呢?
回复 支持 反对

使用道具 举报

板凳
发表于 2012-10-15 09:35:35 | 只看该作者
all条件就是用=的,概念是all如果子查询没有结果,那么返回true,与集合中的所有值比较.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-5-20 11:53 , Processed in 0.090642 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表