in子查詢與表連線是否等價?

wei-xh發表於2012-02-01

Select emp.*
from emp
where emp.dept_no in (
select dept.dept_no
from dept
where dept.dept_group = 1
)
;
是否等價與:
select emp.*
from
emp,
dept
where
dept.dept_no = emp.dept_no
and dept.dept_group = 1
;

這個重寫可能存在問題,除非dept.dept_no是唯一的,或者(dept_no,dept_group)是唯一的。
否則,查詢的結果就可能返回emp表的記錄的多個copy。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-715417/,如需轉載,請註明出處,否則將追究法律責任。

相關文章