9

この(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がありません。また、パーティションのフィールドによって順序付けられていることは重要ですか?

4

1 に答える 1

16

あなたが与えたリンクによると、それは次のように見えるはずです:

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用です。これは、指定したリンクの例に基づいています。

  1. オラクル
  2. Mysql
于 2012-06-04T13:48:20.833 に答える