SQL服务器将值从一个表插入另一个表

时间:2014-10-14 18:37:31

标签: sql sql-server

我正在尝试将一列数据从一个表插入另一个表。我试图插入的表称为MU.PROVIDERS。我插入的表名为Sheet1 $。 (从excel表导入)。它们共有的列称为" NPI",这是所有提供程序通用的密钥,因此我尝试基于此密钥插入。并非Sheet1 $中的每个NPI值都会将相应的RELAY_ID值放入' MU.PROVIDERS'表。 (' MU.PROVIDERS'中的NPI比Sheet1 $中的NPI更多)我的查询如下:

  INSERT INTO [MU.PROVIDERS] (RELAY_ID) 
  SELECT h.RELAY_ID
FROM  Sheet1$ as h  JOIN
 [MU.PROVIDERS]  as i ON h.NPI = i.NPI;

我收到错误: 无法将值NULL插入列' NPI',表' MU.PROVIDERS&#39 ;;列不允许空值。 INSERT失败。

我确实将NPI列设置为' MU.PROVIDERS'的主键。表,但我没有在此列中插入任何内容,所以我不明白这个问题。

2 个答案:

答案 0 :(得分:0)

我想你想要updateInsert添加了新行。 Update更改了列的值:

UPDATE i
    SET relay_id = h.relay_id
    FROM mu.Providers i JOIN
         Sheet1$ h
         ON h.NPI = i.NPI;

答案 1 :(得分:0)

您可能已将NPI列定义为主键。 但主键需要一个唯一值来标识行。 如果未使用INSERT语句提供值,则应将NPI列定义为IDENTITY(1,1)以自动创建新的标识值。