从where表中获取where子句的所有行

时间:2015-07-10 06:56:28

标签: sql sql-server sql-server-2008

我有两个表,我想从两个表中获取数据。 TABLE_1

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

我希望左表中的所有行都带有Class name

结果

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。

1 个答案:

答案 0 :(得分:0)

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

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

<强> RESULT

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