如何选择具有相同值的行

时间:2015-05-27 11:06:50

标签: html mysql sql

我遇到的问题如下。我有一张包含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)

2 个答案:

答案 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代码,我就不能具体了。