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如何写?

sql

6个回答

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

u010412440
com_jia 神奇的答案!!!
一年多之前 回复

一般这样就可以 :
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

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

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!