1

我有一张有 50 列的表。它插入了两行。我想通过仅从该表中获取值来添​​加第三行。

insert into Sample([IDX],[CODE]
      ,[NAME]
      ,[LABEL]
      ,[BILLING_ADDRESS]
      ,[PRIMARY_CONTACT_NAME]
      ,[PRIMARY_CONTACT_EMAIL]
      ,[SECONDARY_CONTACT_NAME]
      ,[SECONDARY_CONTATCT_EMAIL]
      ,[RDBMS_SERVER]
      ,[RDBMS_DB_NAME]
      ,[RDBMS_LOGIN]
      ,[RDBMS_PWD]
      ,[ETL_FOLDER_PATH])
values (select [IDX],[CODE]
      ,[NAME]
      ,[LABEL]
      ,[BILLING_ADDRESS]
      ,[PRIMARY_CONTACT_NAME]
      ,[PRIMARY_CONTACT_EMAIL]
      ,[SECONDARY_CONTACT_NAME]
      ,[SECONDARY_CONTATCT_EMAIL]
      ,[RDBMS_SERVER]
      ,[RDBMS_DB_NAME]
      ,[RDBMS_LOGIN]
      ,[RDBMS_PWD]
      ,[ETL_FOLDER_PATH] 
     from Sample where IDX = 2
) 

在上面的例子中,我只取了几列。在尝试执行此查询时,它显示如下消息。

INSERT 语句中的列多于 VALUES 子句中指定的值。VALUES 子句中的值数必须与 INSERT 语句中指定的列数相匹配。

这里标签字段是计算值。[标签] = [代码]+[名称] 如何解决?

谢谢

4

3 回答 3

1

采用:

插入样本([IDX],[CODE],[NAME],[BILLING_ADDRESS],[PRIMARY_CONTACT_NAME],[PRIMARY_CONTACT_EMAIL],[SECONDARY_CONTACT_NAME],[SECONDARY_CONTACTT_EMAIL],[RDBMS_SERVER],[RDBMS_DB_NAME],[RDBMS_LOGIN],[RDBMS_PWD ] ,[ETL_FOLDER_PATH]) 选择 [IDX],[CODE],[NAME],[BILLING_ADDRESS],[PRIMARY_CONTACT_NAME] ,[PRIMARY_CONTACT_EMAIL] ,[SECONDARY_CONTACT_NAME] ,[SECONDARY_CONTACTT_EMAIL] ,[RDBMS_SERVER] ,[RDBMS_DB_NAME] ,[RDBMS_LOGIN] ,[RDBMS_PWD] ,[ETL_FOLDER_PATH] 来自 IDX = 2 的示例

[标签] 将自行计算,无需插入。

于 2012-05-21T11:01:49.257 回答
0

不要使用values

insert into Sample([IDX],[CODE]
      ,[NAME]
      ,[LABEL]
      ,[BILLING_ADDRESS]
      ,[PRIMARY_CONTACT_NAME]
      ,[PRIMARY_CONTACT_EMAIL]
      ,[SECONDARY_CONTACT_NAME]
      ,[SECONDARY_CONTATCT_EMAIL]
      ,[RDBMS_SERVER]
      ,[RDBMS_DB_NAME]
      ,[RDBMS_LOGIN]
      ,[RDBMS_PWD]
      ,[ETL_FOLDER_PATH])
select [IDX],[CODE]
      ,[NAME]
      ,[LABEL]
      ,[BILLING_ADDRESS]
      ,[PRIMARY_CONTACT_NAME]
      ,[PRIMARY_CONTACT_EMAIL]
      ,[SECONDARY_CONTACT_NAME]
      ,[SECONDARY_CONTATCT_EMAIL]
      ,[RDBMS_SERVER]
      ,[RDBMS_DB_NAME]
      ,[RDBMS_LOGIN]
      ,[RDBMS_PWD]
      ,[ETL_FOLDER_PATH] 
     from Sample where IDX = 2
于 2012-05-21T11:03:48.203 回答
0

如果要插入一行静态数据(不是查询的结果),则应使用“值”。

要插入作为查询结果的多行(或单行),请使用语法:

insert into (column, column, ...)
  select column, column
    from xxxx
于 2012-05-21T11:08:54.760 回答