【问题标题】:Executing Insert into statement in SQL resulting in nulls for other columns在 SQL 中执行 Insert into 语句导致其他列为空
【发布时间】:2013-05-09 09:42:11
【问题描述】:

我正在尝试使用插入到其他列的数据已经存在的列中,但数据没有与其他列相邻填充,而是在表中的所有数据之后插入数据。 例如:

select * from tab1;       
ID NAme Last_name          
1  King                     
2  Queen                   
3  Rook 

select * from tab2;
Id LastName_Name
1  Abc 
2  def
3  xyz

SQL : Insert into tab1 (Last_name)
select tab2.LastName_Name from tab1,tab2, where tab1.Id=tab2.Id

Output:
Id Name Last_Name
1  King   NULL
2  Queen  NULL
3  Rook   NULL
4  NULL   Abc
5  NULL   def
6  NULL   xyz

但我想要的数据如下:

Id Name Last_Name
1  King   Abc
2  Queen  def
3  Rook   xyz

有什么解决方法吗?在此先感谢:)

第二步:

从tab1中选择*;

ID 名称 Id2

1 国王 NA

2 女王 NA

3 Rook NA

从tab2中选择*;

ID 

1  

2  

3  

4

5

6

我想要输出数据如下:

tab2 中的 ID 数据应填充到与 TAB1.ID 列值匹配的 tab1 列 (ID2) 中,如下所示:

Id Name ID2
1  King   1
2  Queen  2
3  Rook   3

您能对此提出任何疑问吗?

【问题讨论】:

  • 非常感谢您的回答对我有帮助,如果要执行以下操作,我应该问什么:从 tab1 中选择 *; ID NAME TAB2_ID 1 King 2 Queen 3 Rook Exa: select * from tab2; ID 1 2 3 输出:ID 名称 TAB2_ID 1 King 1 2 Queen 2 3 Rook 3
  • 当进一步的问题被添加为 cmets 时,很难阅读。格式化确实可以帮助我们帮助您,因为这是一个不同的问题,最好的办法是关闭这个问题(接受为您解决最初问题的答案),然后打开一个新问题。

标签: sql tsql sql-server-2008-r2


【解决方案1】:

所以您想用来自 tab2 的相应姓氏来更新 tab1 中的行?

在这种情况下,请使用 UPDATE 语句而不是 INSERT:

UPDATE tab1
SET tab1.Last_name = tab2.LastName_Name
FROM tab1
    JOIN tab2 ON tab1.Id = tab2.Id

【讨论】:

  • 非常感谢您的回答以及如果要执行以下操作我应该问什么:从 tab1 中选择 *; ID NAME TAB2_ID 1 King 2 Queen 3 Rook Exa: select * from tab2; ID 1 2 3 输出:ID 名称 TAB2_ID 1 King 1 2 Queen 2 3 Rook 3
  • @AdaTheDev 非常感谢您的回答以及如果想要执行以下操作我应该问什么:从 tab1 中选择 *; ID NAME TAB2_ID 1 King 2 Queen 3 Rook select * from tab2; ID 1 2 3 输出:ID 名称 TAB2_ID 1 King 1 2 Queen 2 3 Rook 3
【解决方案2】:

您不需要INSERT,您需要UPDATE 声明:

UPDATE tab1 SET tab1.Last_name = tab2.LastName_Name
FROM tab1 INNER JOIN tab2 ON tab1.Id = tab2.Id

【讨论】:

  • 我想从 TAB2.ID 将 TAB2.ID 插入 TAB1.TAB2_ID(COLUMN) 输出应该是:ID NAME TAB2_ID 1 King 1 2 Queen 2 3 Rook 3 请帮忙
  • 当我使用更新语句时,它给出的行数太多了
  • 通过下一步更新您的原始问题,使其更清晰
  • @@AdaTheDev Hey Query 得到了那个更新系统,我需要保留 ltrim(id) 才能使我的结果生效,因为我表中的 Id 列以“空格”开头.. 谢谢非常
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-18
  • 1970-01-01
  • 2019-04-30
相关资源
最近更新 更多