SQLiteで分析関数(window関数)が使えるバージョンでしたら以下のSQLでどうでしょうか?
UPDATE texts AS m SET position =
(
SELECT Newposition - 1
FROM (SELECT _id
, ROW_NUMBER() OVER (order by position) AS Newposition
FROM texts
)
WHERE _id = m._id
);
参考までに分析関数部分のみの実行結果は以下の通りです。
SELECT _id
, ROW_NUMBER() OVER (order by position) AS Newposition
FROM texts
_id | Newposition |
---|---|
4 | 1 |
7 | 2 |
6 | 3 |
なお質問するときは、回答者が状況を再現しやすいように
SQL および 値の内容をテキストでコピーできるような方法で、なるべく回答者が回答しやすいようにお願いします。
おそらく私も@tetr4lab さんの回答がなければ回答することはなかったでしょう。
こちらでお試しできるようにしました
https://wandbox.org/permlink/Q40R24kkwipGRyHR