请教: 这个sql查询如何写? 谢谢

  • 似水
    请教: 这个sql查询如何写? 谢谢

    如图, group by "id列", 选 a列的"maximum", 选b列对应a列"maxumun"的那一行. 前面都没问题, 只是不知道如何抓到"b列对应a列"maxumun"的那一行", 谢谢



    2020-12-24_154137.jpg
  • 木鱼虫
    简单点就用标量子查询,复杂点就用开窗函数
  • 屋大维
    join一下不就好了,前提你还要保证id+a是unique的。
  • p
    ptcptr
    -- 准备临时表数据
    create table #a(id int,a int,b varchar(10))

    insert #a values(1,1,'a')
    insert #a values(1,2,'b')
    insert #a values(1,3,'c')
    insert #a values(2,4,'d')
    insert #a values(2,5,'e')
    insert #a values(2,6,'f')
    insert #a values(2,7,'g')



    -- 查询语句
    select a.* from #a a join
    (select id,a=max(a) from #a group by id) as b on a.id=b.id and a.a=b.a order by a.id


    -- 删除临时表
    drop table #a
  • s
    suifeng123
    用row_number啊
  • 似水
    谢谢.............
  • x
    xsonglive
    selectt1.id,t1.a,t1.b
    from table as t1
    left join table as t2
    ont1.id=t2.id
    and t1.a<t2.a
    wheret2.idis null
  • m
    meanmachine
    子查询,或者用窗口(row_number / rank) 取对应第一行 iOS fly ~