次の表があります。
CREATE TABLE dataTable(
ParentID INTEGER,
MyIndex INTEGER,
// other stuff
PRIMARY KEY (ParentID, MyIndex )
);
特定の範囲にある値の「MyIndex」列の値を減らそうとしています。その目的のために、私は次の声明を持っていると思います:
UPDATE dataTable
SET MyIndex = (MyIndex - ?)
WHERE ((ParentID = ?) AND (MyIndex BETWEEN ? AND ?))
「MyIndex」の値が高いアイテムを先に減らしてしまうと、まだ減っていないアイテムと重複する可能性があるので、問題が発生する可能性があると思います。たとえば、値が (5, 4, 3) で、1 だけ減らされた場合、5 が 4 になると、主キー違反が発生する可能性があります。ただし、値が 3、4、5 の順序で変更されていれば問題ありません。
そのため、代わりに次のステートメントを使用しようとしていました。
UPDATE dataTable
SET MyIndex = (MyIndex - ?)
WHERE ((ParentID = ?) AND (MyIndex BETWEEN ? AND ?))
ORDER BY MyIndex ASC
しかし、次のエラーが表示されます:「"ORDER" の近く: 構文エラー」。ORDER BY の何が問題になっていますか?