如何获得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
)
答
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
您可以显示一些样本数据? – 2012-08-06 16:54:29