我有一个包含50列的表格。它插入了两行。我想通过从该表中获取值来添加第3行。
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语句中指定的列数。
此处标签字段为计算值。 [标签] = [代码] + [名称] 怎么解决?
由于
答案 0 :(得分:1)
使用:
插入Sample([IDX],[CODE],[NAME],[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]) 选择[IDX],[CODE],[NAME],[BILLING_ADDRESS],[PRIMARY_CONTACT_NAME],[PRIMARY_CONTACT_EMAIL],[SECONDARY_CONTACT_NAME],[SECONDARY_CONTATCT_EMAIL],[RDBMS_SERVER],[RDBMS_DB_NAME],[RDBMS_LOGIN],[RDBMS_PWD],[来自Sample的IDL = 2
的ETL_FOLDER_PATH][Label]将自行计算,不需要插入。
答案 1 :(得分: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
答案 2 :(得分:0)
如果要插入一行静态数据(不是查询结果),则应使用“值”。
要插入多个行(或单行),这些行是查询使用语法的结果:
insert into (column, column, ...)
select column, column
from xxxx