我需要在我的数据库中创建父子表。我的子表已经存在了很长时间,所以它包含很长的记录列表。我想做什么将子名复制到我的父母表。
子表
--------------- ChildID | ChildNm --------------- 1 |A 2 |B 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
这是最好的方法吗?
答案 0 :(得分: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))
答案 1 :(得分:1)
建筑明智的这种表关系并不好,完全违反法律。
我不知道你想用这个实现解决什么目的。
根据良好的方法和实践,您需要在子表中添加“ParentId”列。
对于每个孩子,您可以设置父ID。我不确定你将如何判断这个阴囊是否与父母一致。
我建议先重新考虑你的方法。
顺便说一句,您可以使用批量插入查询在父表中插入值,如:
insert into parents (childnm) select ChildNm from Child group by ChildNm