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で実装する必要があるロジック。