如何获得SQL左连接只返回一行?

问题描述:

使用SQL Server 2008,我试图在表1和表2之间在列c1上进行左连接。如何获得SQL左连接只返回一行?

想法是,从左表(表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 
) 
+0

您可以显示一些样本数据? – 2012-08-06 16:54:29

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 
+0

只需添加“不同”?我试过......它冻结。我做错了什么,但我不知道它是什么。 – Soph 2012-08-06 15:22:40

+0

@Soph你能展示一些样本数据吗? – 2012-08-06 16:53:37

+0

@RGI刚刚添加! – Soph 2012-08-07 14:49:30