2016-05-26 7 views
2

2つの列の最大値に基づいて各グループから先頭の行を取得する必要があります。各グループから一番上の行を選択してください

これは、テーブルである:

tag_series_id | tag_season_num | tag_episode_num 
269653    2     24 
269653    3     1 
269653    3     2 
269653    3     3 
281593    1     9 
281593    1     11 
281593    1     10 

結果セットが最大tag_season_numtag_episode_num持つレコードであるべきです。 tag_season_numの方が優先されます。

結果セットは、このようになります。

tag_series_id | tag_season_num | tag_episode_num 
269653    3     3 
281593    1     11 

これらは私の失敗した試みの一部です:

SELECT tag_series_id, tag_season_num, tag_episode_num, tag_watch_status 
FROM taggedshows WHERE 
GROUP BY tag_series_id, tag_season_num 
ORDER BY tag_season_num desc, tag_episode_num desc; 

SELECT tag_series_id, tag_season_num, tag_episode_num 
FROM (SELECT * from taggedshows 
ORDER BY tag_series_id, tag_season_num desc, tag_episode_num desc) x 
GROUP BY tag_series_id; 

SELECT tag_series_id, MAX(tag_season_num), MAX(tag_episode_num) 
FROM taggedshows 
GROUP BY tag_series_id; 
+0

この方法を試してみてください:SELECT distinct ts.tag_series_id、 (select MAX( tag_season_num、 (AS tag_serie_id = ts.tag_serie_id)taggedshowsからtag_season_num)はTS – Alejandra

答えて

1

ビットがネストされているが、私はあなたが2レベルサブクエリ

select * from taggedshows 
where (tag_season_num, tag_episode_num) in 
    (select tag_season_num, max(tag_episode_num) from taggedshows 
    where (tag_series_id , tag_season_num) in 
    (select tag_series_id max(tag_season_num) from taggedshows 
    group by tag_seried_id) 
    group by tag_season_num) 
が必要だと思います
+0

HI、回答のおかげとしてtaggedshows FROM tag_serie_id = ts.tag_serie_idとtag_season_num = ts.tag_season_num)taggedshowsから をMAX(tag_episode_num)を選択しなくクエリは機能しません。私はあなたがwhere句tag_season_num 'select * from taggedshows where(taggedshows、tag_episode_num)'を入れたいと思っています。とにかく私はそれを修正し、まだdoesntの仕事を照会しました – user3746480

+0

私は答えを更新しました.. – scaisEdge

+0

あなたの素早い答えをありがとうございました。私はこれがそれだと思う:) – user3746480

関連する問題