私はたくさんの例を検索して見つけましたが、それでもこの作業を行うのに苦労しています。
SQLiteには次のテーブルがあります。
SELECT * FROM TableA;
ID|USER|NAME|PARENT
1|User1|SomeName|-1
2|User1|SomeOtherName|1
3|User2|SomeName|-1
4|User2|SomeOtherName|-1
SomeOtherNameのNAMEを持つID2の親はID1-これは正しいです。
SomeOtherNameの名前を持つID4の親はID-1-これは正しくありません。ID3である必要があります。
そのような誤ったレコードがたくさんあります(すべて同じNAMEがSomeOtherNameで、PARENTが-1です)。
それらを結び付ける列はUSERです。
間違ったすべてのレコードを正しい親IDで更新する必要があります。
私は無駄に次のことを試みました:
DROP TABLE orphans;
CREATE TEMP TABLE orphans as
SELECT TableA.id, TableA.user, TableA.name FROM TableA WHERE TableA.name = 'SomeOtherName' AND TableA.parent = -1;
UPDATE TableA
SET parent = ( SELECT TableA.id
FROM TableA
INNER JOIN orphans
ON TableA.name = 'SomeName' AND orphans.user = TableA.user
)
WHERE TableA.user IN ( SELECT TableA.user
FROM TableA WHERE TableA.name = 'SomeOtherName' AND TableA.parent = -1 )
;
私はそれを正しく理解できないようです。どんな助けでもありがたいです。