【发布时间】:2021-10-20 14:49:35
【问题描述】:
有一个(可能是基本的)SQL 问题!
考虑到这张表
create TestTable(
name [nvarchar](30) NULL,
record [nvarchar](10) NULL,
parentRecord [nvarchar](10) NULL,
parentID [nvarchar](10) NULL)
insert into TestTable
values ('Child_A', '111', '000', NULL),
('Child_B', '222', '000', NULL),
('Parent_1, '000', NULL, 'xyz'),
('Child_C', '333', '999', NULL),
('Parent_2', '999', NULL, 'qrs')
Child_A 和 Child_B 通过 parentString 与 Parent_1 关联。 Parent_1 的 parentID 是“xyz”。我希望 Child_A 和 Child_B 的 parentID 也为“xyz”(当前为空)。 Child_C 和 Parent_2 也是如此。
如何在不使用另一张桌子的情况下做到这一点?例如,我可以使用另一个表来实现这一点,如下所示:
create Helper(
record [nvarchar](10) NULL,
parentRecord [nvarchar](10) NULL,
parentID [nvarchar](10) NULL)
insert into helper
select record, parentString, parentID from TestTable
where parentID is not null
update tt
set tt.parentID = h.parentID
from TestTable tt, helper h,
where tt.parentString = h.record
and tt.parentString is not null
所以这行得通,但我必须创建另一个表才能这样做。有没有办法在不使用另一个表的情况下实现我的目标?谢谢!
【问题讨论】:
-
你的设计是错误的,你应该只通过记录ID将孩子链接到父母,而不是名字。但是可以将您的表重新加入到您的更新中 - 不需要另一个表。
标签: sql sql-server tsql sql-update