0

我可以将现有表中的不同值列表插入到另一个现有表中:

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]在插入列表语句期间是否有语法......

是否可以在一笔交易中做到这一点?

4

1 回答 1

2

只需选择该列两次:

insert into [MyDb]..[User]([UserName], DisplayName)
Select distinct [PersonName], [PersonName]
from [Server].[Db].[dbo].[People]
where [Person] != 'Unknown'
于 2020-04-08T08:06:28.977 回答