从连接的结果中选择不同的值

时间:2013-10-11 17:03:52

标签: sql sql-server-2008

我正在尝试在SQL连接的某个列中获取唯一值的列表。

我的加入如下:

select P.column1, A.column2 from Table1 P
inner join Table2 A
on P.column1=A.column1

我想获得第1列的不同值列表。我试过

Select distinct A.column1 from (select P.column1, A.column2 from Table1 P
inner join Table2 A
on P.column1=A.column1)

但SQL并不喜欢这样。

2 个答案:

答案 0 :(得分:2)

如果您不需要,请不要选择第2列?

select distinct P.column1 
from Table1 P
inner join Table2 A
on P.column1=A.column1

或者如果由于某些未知原因您确实需要子查询,则需要对其进行别名。

Select distinct s.column1 from (select P.column1, A.column2 from Table1 P
inner join Table2 A
on P.column1=A.column1) s

答案 1 :(得分:0)

我建议使用CTE代替子查询吗?

您可以按如下方式重新编写查询:

WITH CTE
AS
(
    SELECT P.column1,
        A.column2
    FROM Table1 P
    INNER JOIN Table2 A
    ON P.column1=A.column1
)
SELECT DISTINCT Column1,
    Column2
FROM CTE

您可以根据自己的要求从CTE中选择任意数量的列。