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);
4

2 回答 2

2

如果您的问题是指树结构,则最好查看这篇文章。如果您的父母只有 1 个级别的孩子,那么您的方式可能是最简单的方式。

于 2011-05-19T12:25:58.903 回答
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;
于 2011-05-19T12:31:32.850 回答