2014-04-01 36 views
0
Table_A:    Table_B: 

Column_A    Column_A Value EmpId 

A     A   1  1 
B     B   2  1 
C     -   -  - 
D     -   -  - 

我有2個表,如上所示。我想獲得有關EMPID在SQL Server 2008中查詢寫入問題

我預計有關EMPID結果的表-A的所有記錄 - 1:

Column_A Value 
A   1 
B   2 
C   null 
D   null 

我用下面的查詢:

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

上述查詢將給出我的預期結果,但您可以看到它不會基於EmployeeId進行過濾。誰能幫我。由於

有快捷幫助請

回答

2
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 

應該給你預期的結果。

0

如果你想申請的EmpID的過濾器,然後只需添加where子句,

Select * from Table_A a 
left join Table_B b on a.Column_A = b.Column_B 
where b.EmpId = 1 
+0

這是如何從已經由Stuart所提供的答案有什麼不同? – freefaller

+0

除了語法外,不要太多。但是,在where子句中添加條件是個好主意,如果用戶想要添加更多條件進行過濾,包括SQL Script中任何表的列。但是對於這個ans唯一的Stuart解決方案也是完美的。我只是通過記住未來的需求而添加了答案。 – AK47

+0

這個答案的問題是,通過將條件添加到WHERE子句中,您已將結果集轉換爲INNER JOIN而不是LEFT OUTER JOIN。換句話說,只有具有b.EmpID爲1的行纔會被返回,這不是預期結果顯示的結果(表A中每行一行,表b中不匹配的空值)。 –