明智重蔵です。
MySQL8.0のWindow関数を他DBと比較してまして、
MySQLエキスパートの皆様に御願いがあります。
MySQL8.0が動かせる方がおりましたら、
比較3を、試した結果を書いていただけないでしょうか?
(同様の比較をされる方に、有用な情報になると思いますので)
■■■比較1■■■■■■■■■■■■■■■■■■■■■■■■■■■
Oracleで可能な、
Lag,Lead,First_Value,Last_Value,Nth_Valueでのignore
nulls
https://www.slideshare.net/oysteing/common-table-expressions-cte-window-functions-in-mysql-80
の48ページと49ページによると、MySQL8.0では不可
■■■比較2■■■■■■■■■■■■■■■■■■■■■■■■■■■
ソートキーが日付型で、Range指定でのInterVal型の使用
https://www.slideshare.net/oysteing/common-table-expressions-cte-window-functions-in-mysql-80
の35ページによると、MySQL8.0で可能です
■■■比較3■■■■■■■■■■■■■■■■■■■■■■■■■■■
SQLServerで可能な、
Window関数を使用したインラインビューでのUpdateとDelete
create table TestTable(
Val int unsigned);
insert into TestTable values
(1),(3),(5),(10),(20),(30),(40);
with UpdView as(
select Val,Row_Number() over(order by Val) as NewVal
from TestTable)
update UpdView
set Val = NewVal;
with DelView as(
select Row_Number() over(order by Val) as rn
from TestTable)
delete from DelView where rn < 3;
https://www.slideshare.net/oysteing/mysql-80-common-table-expressions-71760102
の5ページに書いてある構文です。
https://dev.mysql.com/doc/refman/8.0/en/view-updatability.html
にWindow関数を使うと更新(および削除)不可と書いてないので
更新(および削除)可能と予想してます。