如何获取由另一列排序的连接中的顶行

时间:2016-04-28 12:56:10

标签: sql join

我在2张桌子上有一个内连接。

考虑

表1

   sid   name
    1   abc
    2   xyz

表2

sdid sid detailname
1     1    a
2     1    b
3     2    x

所以我的查询如下所示

SELECT *
FROM table1 t1
INNER JOIN table2 t2
ON t1.sid=t2.sid

我得到的结果是

sid  name   sdid    sid  detailname
1     abc    1       1      a
1     abc    2       1      b
2     xyz    3       2      x

我想修改此查询以获取表2中最高的'sdid'

我的最终结果应该是

sid    name   sdid    sid  detailname 
1       abc    2       1      b
2       xyz    3       2      x

1 个答案:

答案 0 :(得分:2)

join中再包含一个子查询,以获取table2中每个sid的最大sdid。

SELECT t1.sid,t1.name,t2.sdid,t2.sid,t2.detailname
FROM table1 t1
INNER JOIN table2 t2 ON t1.sid=t2.sid
INNER JOIN (select max(sdid) as maxsdid, sid from table2 group by sid) t21 
ON t21.sid=t2.sid and t21.sdid = t2.sdid