Cheokヤンチェン:
いくつかの試行の後、私は生成することができたrow_number()
私が望んだ値を持つ列を。
select "order", row_number() over win - 1, type, title, body, searched_string from plain_note
WINDOW win AS (
order by
title desc,
case when type = 0 then body else searched_string end desc
)
今、私は上書き全体に希望の「注文」からの値で、コラム「ROW_NUMBER()に勝利- 1」
例えば、
- 1行目では、私は、更新したいと思い、「順序」値0とカラム(元の値13)。
- 2行目では、私は、更新したいと思い、「順序」値1とカラム(元の値14)。
- ... 等々。
私が知っている可能性があり、そうするための正しいSQLiteのステートメントは何ですか?ありがとうございました。
私がこれまでにしようとしたアプローチがあります
update plain_note set "order" = (
select row_number() over win - 1 from plain_note
WINDOW win AS (
order by
title desc,
case when type = 0 then body else searched_string end desc
)
);
しかし、これは作るALLの1行目持つ、「オーダー」の行を- 「1 ROW_NUMBER()勝利」 0の値を、。
離れて渡します:
あなたのコードは、テーブルの行とサブクエリの行の間のリンクが含まれていません。
私はこのような更新方法を記述します。
with cte as (
select *, row_number() over win - 1 as rn from plain_note
window win as (order by
title desc,
case when type = 0 then body else searched_string end desc
)
)
update plain_note set "order" = (select rn from cte where "order" = plain_note."order");
列の値のこの意志の仕事は"order"
独特です。