自引用表,单个查询中的父/子插入语句

时间:2011-05-19 12:18:34

标签: mysql sql insert hierarchical-data self-reference

我有一个自引用表,我想在一个查询中添加父和子示例。有没有更好的方法来做到这一点,以类似于我下面的方式分解它?

+---------------------+
|       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 个答案:

答案 0 :(得分:2)

如果您提到的问题是树形结构,最好检查一下this article。如果您只有1级孩子的父母,那么您的方式可能是最简单的方法。

答案 1 :(得分: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;