【问题标题】:Insert the same distinct list twice两次插入相同的不同列表
【发布时间】: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


【解决方案1】:

只需选择该列两次:

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

【讨论】:

    猜你喜欢
    • 2017-09-09
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2012-05-29
    • 1970-01-01
    • 2018-10-11
    相关资源
    最近更新 更多