Sql server SQL Server 2008中的查询写入问题
如上图所示,我有两张桌子。我想获得与EmpId相关的表A的所有记录 我与EmpId-1相关的预期结果: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 - -
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