2015-07-10 58 views
-1

我有两个表,我想从这两个表中获取数据。 TABLE_1从左边的表中得到所有的行与where子句

ID Name 
1 Test11 
2 Test22 
3 Test33 
4 Test44 
5 Test55 
6 Test66 

TABLE_2

ID Class Price 
1  X1  10 
6  X1  20 
4  X1  30 
6  X3  20 
1  X2  10 
2  X2  10 

我想从左边表,其中的类名

结果

if Class='X1' 

ID Name  Class Price 
1 Test11  X1  10 
2 Test22  X1 
3 Test33  X1 
4 Test44  X1  30 
5 Test55  X1 
6 Test66  X1  20 

我使用SQL Server的所有行2008

+0

您是否尝试过自己什么?任何努力?还不清楚你如何得到这个结果:'2 Test22 X1'。根据你的输入数据,即使你的表有'ID <-> ID'关系是不可能的,因为表2中的记录'2 X2' –

+0

@AndyKorneyev抱歉编辑,请分享您的评论。 – user3441151

+0

一个简单的'LEFT JOIN'就可以解决这个问题。 –

回答

0

您可以使用简单的LEFT JOIN来实现此目的。您只需在您的SELECT声明中指定X1作为您的Class

SELECT 
    t1.*, 
    Class = 'X1', 
    t2.Price 
FROM Table_1 t1 
LEFT JOIN Table_2 t2 
    ON t2.ID = t1.ID 
    AND t2.Class = 'X1' 

结果

ID   Name  Class Price 
----------- ---------- ----- ----------- 
1   Test11  X1 10 
2   Test22  X1 NULL 
3   Test33  X1 NULL 
4   Test44  X1 30 
5   Test55  X1 NULL 
6   Test66  X1 20 
+0

'='附近的语法不正确 – user3441151

+0

您确定自己复制了吗?它在我的机器上正常工作。 –

+0

是的,它的权利 – user3441151