次のデータがあります。
type id date1 date2 diff
-----------------------------------
blue 1 x1 xxx 18
blue 1 x2 - -
red 1 x1 - -
blue 2 x1 xx 15
blue 2 x2 xx 18
blue 2 x3 - -
そして、次のようなデータを取得するために a を追加したいと思いrow_number
ます:
type id date1 date2 diff row_number
---------------------------------------------
blue 1 x1 xxx 18 1
blue 1 x2 - - 2
red 1 x1 - - 1
blue 2 x1 xx 15 1
blue 2 x2 xx 18 2
blue 2 x3 - - 3
つまり、最初にタイプで並べ替え、次に ID と最後の日付で並べ替えます。
次の構文を試しました。
Create table t(type char(7), id int(13), date1 date, date2 date, diff int, row_number int) ;
Insert into t(type, id, date1, date2, diff, row_number)
(SELECT a.type, a.id, a.date1, a.date2, a.diff
FROM
(Select
type, id, date1, date2, diff, row_number() over (order by type, id, date1) as r
from table) a
order by
a.type, a.id, a.date1;
上記の構文は機能せず、次のエラー メッセージが表示されます。
SQL 構文にエラーがあります。MYSQL バージョンに対応するマニュアルを確認してください。
コマンドが次のように機能するかどうかを確認するためだけに、より簡単な構文を試しました。
SELECT
type,
ROW_NUMBER() OVER (PARTITION BY type, id, date1 ORDER By type, lpnr, date1) as t,
id,
date1
FROM table;
また
select
row_number() over(order by id),
id
from table;
それでも同じエラーメッセージが表示されます。
私が間違っていること、またはrow_numberがMYSQLバージョンで機能しない場合(私はheidiとworkbenchを持っています)教えてください。コマンドが機能しない場合、私がやりたいことを行う他の方法はありますか?
手伝ってくれてどうもありがとう!
リンダ