内部加入并选择该表上的其他列

问题描述:

这是我的查询的一部分,我在此查询之前有一个联合。我想在条件下选择table1中的更多列。内部加入并选择该表上的其他列

SELECT c.ID, c.Name, c.Position, c.Email, c.ContactNumber 
FROM table1 c 
INNER JOIN table2 a 
ON c.ID = (SELECT foreignID FROM table2 WHERE a.Name = 'someName') 
WHERE Dept = 'Something' --this will return nothing since in the inner join 
         --the condition returns a single column and it doesn't 
         --satisfy the WHERE Clause 

我要选择满足ID(工作)的人,包括东西部门人。有解决这个问题的另一种方法,或者我真的需要使用UNION来做到这一点。这会影响应用程序,特别是移动应用程序的性能吗?

+0

部门是该表中的列?你不能只使用'ON c.ID = a.foreignID和Dept = Something'? –

+0

Dept来自表1 –

如果我的理解您的要求正确,然后使用LEFT JOIN

SELECT c.ID, c.Name, c.Position, c.Email, c.ContactNumber 
FROM table1 c 
LEFT JOIN table2 a ON c.ID = a.foreignID AND a.Name = 'someName' 
WHERE Dept = 'Something' 
+0

uhm ,,这将返回满足WHERE子句的列,但不返回JOIN部分中的人员。但是,谢谢,只是有点扭曲为此:) –

+0

是'c.ID = a.foreignID'连接是否正确? –

+0

它是正确的,但我必须将其更改为(SELECT foreignID FROM table2 WHERE a.Name ='someName'),并在满足c.ID =(SELECT foreignID FROM table2 WHERE a.Name ='someName' ) –