この(Oracle)SQLはどうすればよいでしょうか。
select a.*, rank() over (partition by a.field1 order by a.field2 desc) field_rank
from table_a a
order by a.field1, a.field2
MySQLに翻訳されますか?
この質問は似ているようですが、基本クエリの最後にOrderByがありません。また、パーティションのフィールドによって順序付けられていることは重要ですか?
この(Oracle)SQLはどうすればよいでしょうか。
select a.*, rank() over (partition by a.field1 order by a.field2 desc) field_rank
from table_a a
order by a.field1, a.field2
MySQLに翻訳されますか?
この質問は似ているようですが、基本クエリの最後にOrderByがありません。また、パーティションのフィールドによって順序付けられていることは重要ですか?
あなたが与えたリンクによると、それは次のように見えるはずです:
SELECT a.*,
(
CASE a.field1
WHEN @curType
THEN @curRow := @curRow + 1
ELSE @curRow := 1 AND @curType := a.field1 END
) + 1 AS rank
FROM table_a a,
(SELECT @curRow := 0, @curType := '') r
ORDER BY a.field1, a.field2 desc;
これが2つのフィドルです。1つはoracle用で、もう1つはmySql用です。これは、指定したリンクの例に基づいています。