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

标题: 请问教一下:这两句sql 有什么区别? [打印本页]

作者: bikong123    时间: 2012-10-14 10:53
标题: 请问教一下:这两句sql 有什么区别?
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删除的记录要多呢?
谢谢!

作者: bikong123    时间: 2012-10-14 10:55
当 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 表的所有记录都查询出来了。为什么呢?

作者: monkeybird    时间: 2012-10-15 09:35
all条件就是用=的,概念是all如果子查询没有结果,那么返回true,与集合中的所有值比较.




欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2