Sql server SQL Server 2008中的查询写入问题

Sql server SQL Server 2008中的查询写入问题,sql-server,sql-server-2008,Sql Server,Sql Server 2008,如上图所示,我有两张桌子。我想获得与EmpId相关的表A的所有记录 我与EmpId-1相关的预期结果: Table_A: Table_B: Column_A Column_A Value EmpId A A 1 1 B B 2 1 C - -

如上图所示,我有两张桌子。我想获得与EmpId相关的表A的所有记录

我与EmpId-1相关的预期结果:

Table_A:             Table_B:

Column_A             Column_A   Value  EmpId

A                    A          1      1
B                    B          2      1
C                    -          -      - 
D                    -          -      -  
我使用了以下查询:

Column_A  Value  
A         1 
B         2
C         null
D         null
上面的查询将给出我的预期结果,但正如您所看到的,它没有根据EmployeeId进行过滤。有人能帮我吗。谢谢

请提供任何快速帮助

Select * from Table_A a left join Table_B b on a.Column_A = b.Column_B  

应该为您提供预期的结果。

如果要应用EmpID的过滤器,只需添加where子句

Select a.Column_A, b.Value 
from Table_A a 
left join Table_B b on a.Column_A = b.Column_B  
and b.EmpID = 1

这与Stuart已经给出的答案有什么不同?除了语法,没有太多不同。但若用户想要添加更多条件来过滤SQL脚本中任何表的列,那个么在where子句中添加条件是个好主意。但对于这个ans,唯一的Stuart解决方案也是完美的。我只是通过记住未来的需求添加了ans。这个答案的问题是,通过向WHERE子句添加条件,您已经将结果集转换为内部连接,而不是左外部连接。换句话说,只返回b.EmpID为1的行,这不是预期的结果(表a中每行一行,表b中不匹配的为空)。听起来非常正确!谢谢但请再次检查问题“我与EmpId-1相关的预期结果:”
Select * from Table_A a 
left join Table_B b on a.Column_A = b.Column_B  
where b.EmpId = 1