mysql 选择前4个_mysql-按人选前4个成绩,但至少需要两个位置

我有诸如

eventId locationId score athlete

8739 73 48 matt

8734 73 46 matt

8788 73 45 matt

8738 73 44 matt

8787 73 44 matt

8735 73 43 matt

8789 6 43 matt

我需要按人捕获前4个得分,但是前4个得分中至少有1个来自与其他3个不同的locationId

在这种情况下,我希望这个返回

eventId locationId score athlete

8739 73 48 matt

8734 73 46 matt

8788 73 45 matt

8789 6 43 matt

我试过写出将使用GROUP BY HAVING MIN(locationId)!= MAX(locationId)的查询,但是我不确定在完成ORDER BY和LIMIT的同时如何实现.

我也尝试过进行自我联接,但是我不确定如何根据s.score和score2返回最佳结果.

似乎步入正轨的自我联接的开始

SELECT s.eventid, s.locationid, athlete, score

, s2.eventid, s2.locationid, s2.athlete, score score2

FROM singles s

INNER JOIN singles s2 ON s.athlete = s2.athlete AND s.locationid != s2.locationid

WHERE s.athlete = 'matt'

ORDER BY score DESC;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值