MySQLのROW_NUMBER() 質問する

MySQLのROW_NUMBER() 質問する

MySQL で SQL Server 機能を複製する良い方法はありますかROW_NUMBER()?

例えば:

SELECT 
    col1, col2, 
    ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col3 DESC) AS intRow
FROM Table1

次に、たとえば、各ペアのintRow最高値を含む単一の行を取得するために、1 に制限する条件を追加できます。col3(col1, col2)

ベストアンサー1

MySQL 5.7以下ではランキング機能はありません。(これはMySQL v8.0以降でサポートされています。@LukaszSzozda の回答

最も近似できる方法は変数を使うことです。

SELECT t.*, 
       @rownum := @rownum + 1 AS rank
  FROM YOUR_TABLE t, 
       (SELECT @rownum := 0) r

では、私の場合はどのように機能するのでしょうか? col1 と col2 のそれぞれに 1 つずつ、2 つの変数が必要になりますか? col1 が変更されたときに、何らかの方法で col2 をリセットする必要がありますか?

はい。Oracleであれば、LEAD関数を使用して次の値でピークに達することができます。ありがたいことに、QuassnoiはMySQLで実装する必要があるロジック

おすすめ記事