如何让SQL Left Join只返回一行?

时间:2012-08-06 14:25:42

标签: sql-server-2008 left-join

使用SQL Server 2008,我试图在列c1上的表1和表2之间进行左连接。

我的想法是,从左表(表1)中,我抓住每一行。从右边(表2)我只得到一个值。

Table 1    
--------------------
document          varchar(30)

Table 2    
--------------------
idTable2          int(30)
document          varchar(30)

Sample data TABLE 1
--------------------
3846922
2000762
3064627

Sample data TABLE 2
--------------------
1            3846922
2            2000762
3            3064627
4            2000762
5            3846922 

Sample Result
--------------------
3846922     1
2000762     2
3064627     3

我使用this帖子作为指南,但无法达到理想的效果。到目前为止,我得到左表的许多值和许多正确的值。有任何想法吗?以下是我的SQL查询:

SELECT t1.document, t2.idTable2
FROM Table1 t1
LEFT JOIN Table2 t2
ON t1.document = 
(
   SELECT TOP 1 t2_aux.document
   FROM Table2 t2_aux
   WHERE t2_aux.document = t1.document
   ORDER BY t2_aux.document DESC
)

1 个答案:

答案 0 :(得分:1)

DECLARE  @t1 TABLE(document varchar(30))

INSERT INTO @t1
VALUES('3846922'),('2000762'),('3064627')

DECLARE  @t2 TABLE(idTable2 int,document varchar(30))
INSERT INTO @t2
VALUES(1,'3846922'),
(2,'2000762'),
(3,'3064627'),
(4,'2000762'),
(5,'3846922 ')

select t1.document,min(t2.idTable2) as idTable2  from @t1 t1 inner join @t2 t2
on t1.document = t2.document 
group by t1.document
order by idTable2