在SQL中执行Insert into语句,导致其他列为null

时间:2013-05-09 09:42:11

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

我正在尝试在其中已存在其他列的数据的列中使用插入,但数据不会填充到其他列的附近,而是在表中的所有数据之后插入数据。 例如:

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

有什么解决方法吗?提前谢谢:)

第2步:

从tab1中选择*;

ID ID Id2

1 King NA

2 Queen NA

3 Rook NA

从tab2中选择*;

ID 

1  

2  

3  

4

5

6

我想要输出数据如下:

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

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

您能否提供任何疑问?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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