我遇到的问题如下。我有一张包含5 COLUMNS 的表:id,名称,评级,运动和价值。现在,我想选择名称和评级相同的行,但这项运动有所不同,价值的数量最多。我该怎么做?
示例:
id name rating sport value
1 Mike 16 football 2002
2 Sam 85 baseball 2003
3 Mike 16 baseball 2015
4 Sam 16 hockey 2004
所以这应该返回id = 3的行(因为Mike = Mike,16 = 16,棒球!=足球,2015> 2002)
答案 0 :(得分:2)
假设您的表名为ratings
:
select r.*
from ratings r
inner join (
select name, rating, max(value) value
from ratings
group by name, rating
having count(distinct sport) > 1
) q
on r.name = q.name and r.rating = q.rating and r.value = q.value
在某些情况下,这可能无法产生您想要的东西 - 即,如果有人对具有相同评级的不同运动具有相同的价值。但它至少适合您的用例。
答案 1 :(得分:0)
使用group by创建具有通用名称和评级的组。使用有计数(不同运动)> 1排除没有多项运动的组。
如果没有原始的SQL代码,我就不能具体了。