【问题标题】:insert column to table which shares a key with another table向与另一个表共享键的表插入列
【发布时间】:2013-03-10 07:09:40
【问题描述】:

我不确定我是否使用正确的功能来做我想做的事。这是我到目前为止的代码:

insert into assets(owner)
(select a.Username as whatIwant
from dbo.DIRECTORY a join dbo.ASSETS b
on a.Ext = b.Ext)

我有一个包含资产 (dbo.assets) 的表,其中有一列 (ext),其中包含与资产相关联的电话分机号。在另一个表 (dbo.directory) 中,我有一列电话分机 (ext) 的号码与驻留在该分机 (用户名) 处的人的姓名相关联。

我想做的是将绑定到电话分机的人的用户名插入到新列下的 dbo.assets 中:所有者。因此,分机必须与用户名匹配。我应该改用合并吗?

【问题讨论】:

  • 1) 将新列添加到表 1st 然后提交更改 2) 将插入更改为更新,因为资产中已经存在记录,您只需要将记录设置为用户名列更新用户名列来自 dbo.directory

标签: sql-server tsql join merge


【解决方案1】:

您没有提及您使用的是哪个 RDMS。无论哪种方式,您都需要先将列添加到表中,然后您将更新设置列值的行。在 SQL Server 中,它看起来像这样。

ALTER TABLE assets ADD owner VARCHAR(20) NULL



update a 
set a.owner = b.username
from assets a
inner join directory b on a.ext=b.ext

【讨论】:

  • 抱歉,是的,我使用的是 SQL Server 08。此查询效果很好,谢谢
猜你喜欢
  • 1970-01-01
  • 2020-02-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-05
相关资源
最近更新 更多