3

我需要在我的数据库中创建父子表。我的子表已经存在很长时间了,所以它包含一长串记录。我想做的是把孩子的名字复制到我父母的桌子上。

子表

---------------
孩子ID | ChildNm
---------------
1 |一个
2 |乙
3 |C

父表

----------------
ParentID|ParentNm|ChildNm
----------------

询问

WHILE (
        SELECT Min(ChildID)
        FROM ChildTable
        ) <
    SELECT Max(ChildID)
    FROM ChildTable

BEGIN
    --INSERT every child NAME TO my parents TABLE
END

这是最好的方法吗?

4

2 回答 2

1

我认为不需要循环,我很少这样做。

也许尝试这样的事情:

insert parent(ChildNm)
select distinct ChildNm from child c
where not exists (select 1 from parent where c.childNm = childNm)

select * from parent

我不确定你想要什么作为父母名字

*我假设你的父表看起来像这样:

create table parent(ParentID int identity(1,1), ParentNm char(1), ChildNm char(1))
于 2013-07-02T08:06:45.437 回答
1

架构明智的这种表关系是不好的,完全违反了法律。

我不知道您要使用此实现解决什么目的。

根据好的方法和实践,您需要在子表中添加一列“ParentId”。

您可以针对每个孩子设置父 ID。我不确定您将如何决定此 clild 归属于哪个父级。

我建议首先重新考虑您的方法。

顺便说一句,您可以使用批量插入查询在父表中插入值,例如:

   insert into parents (childnm) select  ChildNm from Child group by ChildNm
于 2013-07-02T08:13:03.140 回答