我有一张包含数千个条目的表,其中许多条目采用层次结构形式。
我正在寻找一种方法,将几个特定家谱的头级输入到查询中,搜索他们的所有 child 、他们 child 的 child 等,直到没有行剩余,然后将每个 id 插入另一个表 12 次。
编号(AID, id1, 1) (AID, id1, 2)...(AID, id1, 11)(AID, id1, 12)
我一直在尝试将此查询放在一起作为测试,以帮助找到所需的 id,最终目标是能够找到每个后代并将每个后代插入另一个表 x12 次。但收效甚微。有什么想法吗?
....for the right syntax to use near ''parent_id' FROM test AS t JOIN acc2 as r on t.parent_id = r.id; ' at line 25
这是我当前的错误消息
(绝对业余)
DROP PROCEDURE IF EXISTS find_descendants ()
DELIMITER GO
CREATE PROCEDURE find_descendants ()
BEGIN
DROP TABLE IF EXISTS acc;
CREATE TEMPORARY TABLE acc
SELECT id, parent_id, 0 as level
FROM test
WHERE id = 2;
ALTER TABLE acc ADD primary key (id,parent_id);
REPEAT
DROP TABLE IF EXISTS acc2;
CREATE temporary table acc2
SELECT * FROM acc;
INSERT INTO acc2
SELECT t.id, r.'parent_id'
FROM test AS t
JOIN acc2 AS r ON t.parent_id = r.id;
UNTIL Row_count () = 0 END REPEAT;
END;
go
DELIMITER;
CALL find_descendants ();
SELECT * FROM acc;
在此之后,我收到错误#1137“无法重新打开表'acc2'”,这似乎使整个过程无效!
最佳答案
INSERT 查询中有语法错误
INSERT INTO acc2
SELECT t.id, r.'parent_id' /*--COMMENT : remove '' from 'parent_id' , it should be r.parent_id */
FROM test AS t
JOIN acc2 AS r ON t.parent_id = r.id;
关于mysql - 层次结构、临时表插入自,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21456899/