子查询或加入某个值最小的表

时间:2015-09-18 13:49:38

标签: sql sql-server

我有一个查询,其中包含一个ID,即第二个表中的多行引用。我需要连接两个表,但只选择第二个表中某列为MIN的列。请注意,我还需要从tableb中选择其他列,而不仅仅是最小值。我需要引用相对于该最小值的其他列。

Psuedo代码由于代码和数据保密。

SELECT tablea.id, tableb.id, tableb.name FROM tablea
LEFT JOIN ( SELECT * FROM tableb WHERE `id` = Minimum )

Microsoft SQL Server

2 个答案:

答案 0 :(得分:1)

你可以试试这个......

SELECT tablea.id, tableb.id, tableb.name 
FROM tablea a, tableb b
WHERE a.id = b.id AND b.amt =  (SELECT MIN(z.amt) FROM tableb z 
                                       WHERE z.id = a.id )

答案 1 :(得分:0)

SELECT a.id, b.id, b.name 
FROM tablea a
LEFT JOIN ( SELECT *, row_number() over(partition by id order by dollar_amt_column) as rn 
           FROM tableb ) b
on a.id = b.id and b.rn = 1

假设您需要minimum列的id值,您可以将row_numberjoin用于其他表。