1

各人の最大値を持つ行を取得したい。MySQL の使用。

person       page       views
John         home       20
John         cart       15
John         search     43
James        home       32
James        about      41
Kim          cart       5
Kim          contact    3

結果

Person   Page
John     search
James    about
Kim      cart    

1つの考えは、取得してから実行することMAX(views) GROUP BY PERSONですIF(a.views = b.max_views, page, 0)が、これには3つのステップが必要なようで、おそらくもっと簡単な方法があります.

4

3 に答える 3

3
 Select * From table t
 where views =
     (Select Max(views) From table
      Where person = t.person)
于 2013-04-09T18:31:50.957 に答える
1

サブクエリを使用して結果を取得できます。

select t1.person, t1.page
from yt t1
inner join
(
  select max(views) maxview, person
  from yt
  group by person
) t2
  on t1.person = t2.person
  and t1.views = t2.maxview;

デモで SQL Fiddle を参照してください

于 2013-04-09T18:32:11.867 に答える
0

これを試して

select 
    * 
from 
   data d
where d.views =  ( select max(views) from data d2 where d2.person = d.person )
于 2013-04-09T18:32:43.593 に答える