SQL 关联查询,只关联表中最大或者最小的数据的两种思路

表结构

user

idname
1dog
2cat

book

idnameuser_idscore
1数学1100
2语文2120
3英语1190
4数学21130

1 , 对关联表进行限制, 限制表中的最大值

SELECT
	* 
FROM
	`user` us
	JOIN book bk ON us.id = bk.user_id 
	AND bk.id = (SELECT id FROM book ORDER BY score DESC limit 1)

结果:
在这里插入图片描述
此方法能只关联 book 表中最大的记录

2 , 需要关联 book 中每一个user_id 的最大值

使用过滤中间表, filterTable, 先过滤过最大的, 然后分组, 再进行关联

SELECT
	* 
FROM
	`user` us
	JOIN ( 
		SELECT MAX(score) score, user_id FROM book  GROUP BY user_id 
	) filterTable ON us.id = filterTable.user_id
	JOIN book bk ON bk.user_id = filterTable.user_id AND bk.score = filterTable.score

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值