【发布时间】:2020-04-08 08:04:46
【问题描述】:
我可以将现有表中的不同值列表插入到另一个现有表中:
insert into [MyDb]..[User]
([UserName])
(Select distinct [PersonName]
from [Server].[Db].[dbo].[People]
where [Person] != 'Unknown')
内部选择语句带回Jim,Jon,Joe
所以表格看起来像:
UserName | DisplayName
----------------------
Jim | NULL
Jon | NULL
Joe | NULL
但我想将同一个列表放在[User] 表的另一列中,例如:
insert into [MyDb]..[User]
([UserName],[DisplayName])
values (
(Select distinct [PersonName]
from [Server].[Db].[dbo].[People]
where [Person] != 'Unknown')
,
(Select distinct [PersonName]
from [Server].[Db].[dbo].[People]
where [Person] != 'Unknown')
)
所以决赛桌看起来像:
UserName | DisplayName
----------------------
Jim | Jim
Jon | Jon
Joe | Joe
像这样选择两个不同的列表是行不通的。我尝试给内部选择语句一个不起作用的别名。我想我可以在两个单独的语句中轻松地做到这一点,但我想知道在插入列表语句期间是否有语法可以使 [DisplayName] = [UserName]...
是否可以在一笔交易中做到这一点?
【问题讨论】:
-
不要使用“未知”值,使用 null。
-
别无选择。不是我的数据库。这是一个将数据迁移到没有
unknown等条目的地方的练习
标签: sql sql-server tsql