2016-03-04 65 views
0

我有兩個表,例如EmployeeProject表比較兩個SQL查詢:當使用IN

Employee (id, dept, joining_date) 
Project (emp_id, project) 

隨着Project具有Employee表的外鍵。 我必須在projectdept上查詢,並按joining_date的順序返回Employee。對於下面的查詢中的大數據集,哪種查詢的工作速度會更快?

select * from Employee where id in (select p.emp_id from Project p join Employee e on p.emp_id = e.id where p.project = 'project1' and e.dept = 'dept1') order by joining_date 

select * from Employee where id in (select p.emp_id from Project p join Employee e on p.emp_id = e.id where p.project = 'project1' and e.dept = 'dept1') and dept = 'dept1' order by joining_date 

或者有沒有更好更簡單的方法呢?

回答

0

使用IN()表達式的外部查詢完全沒有必要。這將產生你需要的輸出:

select e.* 
from Project p 
inner join Employee e on p.emp_id = e.id 
where p.project = 'project1' and e.dept = 'dept1' 
order by joining_date 
+0

感謝喬爾,但我無法弄清楚如何在django中進行此查詢。我寫的查詢是DJDT打印的查詢。 – Deepak