困盹
2018-03-14 08:01
采纳率: 33.3%
浏览 919

SQL语句连接查询的问题

比如有表A

ID name
1 x
2 y
3 z

表B
ID rank
1 10
1 15
1 30
2 28
2 12
3 24
3 22

我想连接查询对应ID的rank,但是只要最大的rank值
ID name rank
1 x 30
2 y 28
3 z 24
sql如何写?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • yuezhishangx 2018-03-14 08:10
    已采纳

    select b.ID,a.name,max(b.rank) from A a,B b where a.ID=b.ID group by a.ID

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • Y_F_C 2018-03-14 08:08

    如果是oracle数据库,可以使用窗口函数。

    评论
    解决 无用
    打赏 举报
  • yuezhishangx 2018-03-14 08:10

    select a.name,max(b.rank) from A a,B b where a.ID=b.ID group by a.ID

    评论
    解决 无用
    打赏 举报
  • u010835731 2018-03-14 08:15

    SELECT a.ID,a.name, b.rank
    FROM name a
    LEFT JOIN
    (SELECT max(b.rank),
    b.ID
    FROM rank b
    group by b.ID) t
    0N t.ID = a.ID

    评论
    解决 无用
    打赏 举报
  • 灿儿哈察苏 2018-03-14 08:17

    试一下这个语句。
    SELECT * FROM A aa
    INNER JOIN (SELECT id,MAX(Rank) FROM B GROUP BY id) bb ON aa.id=bb.id

    评论
    解决 无用
    打赏 举报
  • myjsyhs 2018-03-14 08:38

    一般这样就可以 :
    select a.id,a.name,max(b.rank) rank from A a,B b where a.ID=b.ID group by a.ID,a.name

    如果希望出现所有的ID,哪怕rank最大值为空也出现的写法 :
    select a.id,a.name,max(b.rank) rank from A a left join B b on a.ID=b.ID group by a.ID,a.name

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题