2011-05-19 91 views
0

我有一个自引用表,并且我想要在单个查询中添加父例子和子例子。有没有更好的方法来做到这一点,然后以类似于下面的方式将其分解?在一个查询中自引用表,父/子插入语句

+---------------------+ 
|  example  | 
+---------+-----------+ 
| id | parent_id | 
+---------+-----------+ 
| 1 |   | 
| 2 |  1  | 
| 3 |  1  | 
| 4 |  1  | 
| 5 |   | 
| 6 |  5  | 
| 7 |  5  | 
+---------+-----------+ 

DECLARE example_id INT; 

INSERT INTO `example` (parent_id) VALUE(""); 

SET example_id = LAST_INSERT_ID(); 

INSERT INTO `example` (parent_id) VALUE (example_id); 

回答

2

如果你指的是你的问题的树结构,你应该更好地检查this article。如果你只有1级的孩子,那么你的方式可能是最简单的方法。

+0

我会有无限的孩子​​每父母。感谢您的链接。 – 2011-05-19 12:28:27

+0

OP在示例中已经显示他每个父母有多个childern。 – Johan 2011-05-19 12:28:43

+0

有一个错过书面声明,我的意思是树状结构的1级。立即修复它;对此感到遗憾 – frail 2011-05-19 12:35:17

0

你做事的方式看起来没问题。
在一个现实世界的例子中,你可能会根据一些标准做一个insert - select

INSERT INTO example SELECT 
    null as id 
    ,e.id as parent_id 
    ,10 as field1 
    ,.... 
FROM example e WHERE e.somefield = 10 ORDER BY e.id DESC LIMIT 1;