我已经搜查,发现的例子负载,但我仍然在努力使这项工作。更新列在同一个表
我下表具有SQLite中:
SELECT * FROM TableA;
ID|USER|NAME|PARENT
1|User1|SomeName|-1
2|User1|SomeOtherName|1
3|User2|SomeName|-1
4|User2|SomeOtherName|-1
父ID为2的SomeOtherName NAME是ID 1 - 这是正确的。
为ID 4 SomeOtherName的名称PARENT是ID -1 - 这是不正确。它应该是ID 3.
我有一个像很多不正确的记录(所有SomeOtherName的相同名称和-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)
;
我似乎无法得到它的权利。任何帮助将不胜感激。
非常感谢您的帮助,这非常有帮助。在我的实时系统上使用它时唯一需要对查询进行的更改是在tmp表的末尾命名列parent1,然后将parent1作为父项插入到TableA中。可以在http://sqlfiddle.com/#!7/1a5ba/9上看到更改 – GMWebs 2012-08-10 13:44:12