首页 > 解决方案 > 两次插入相同的不同列表

问题描述

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

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

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

标签: sqlsql-servertsql

解决方案


只需选择该列两次:

insert into [MyDb]..[User]([UserName], DisplayName)
Select distinct [PersonName], [PersonName]
from [Server].[Db].[dbo].[People]
where [Person] != 'Unknown'

推荐阅读