1

使用 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

我使用这篇文章作为指导,但无法达到预期的结果。到目前为止,我得到了左表的许多值和右表的许多值。有任何想法吗?以下是我的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
)
4

1 回答 1

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
于 2012-08-06T14:29:33.893 回答