如果有条件,如何插入表格?

时间:2014-03-19 06:35:10

标签: sql sql-server

我是sql server的新手,我创建了一个简单的表

IF EXISTS (SELECT * 
   FROM sys.objects 
   WHERE object_id = OBJECT_ID(N'[ODSMasterCustomerLink]') 
   AND type in (N'U'))
DROP TABLE [ODSMasterCustomerLink]
Go
Create Table ODSMasterCustomerLink
(MasterCustomerID [int] FOREIGN KEY REFERENCES 
ODSMasterCustomer(MasterCustomerID), 
CustomerBaseID [int] FOREIGN KEY REFERENCES 
ODSCustomerBase (CustomerBaseID))

select * from ODSMasterCustomerLink

这些是结果

MasterCustomerID    CustomerBaseID
1                      NULL
2                      NULL

现在我想使用下面的脚本在CustomerBaseID列中插入多个值,它表示我的insert语句错误。

If MasterCustomerID = 1 
insert into SMEC_ODS.dbo.ODSMasterCustomerLink
(CustomerBaseID)
values(515, 516, 517, 518, 519, 520)

错误消息是

Msg 110,Level 15,State 1,Line 3 INSERT语句中的列少于VALUES子句中指定的值。 VALUES子句中的值数必须与INSERT语句中指定的列数相匹配。 “

我想要的结果就是这个

MasterCustomerID    CustomerBaseID
    1                     515
    1                     516
    1                     518
    1                     519
    1                     520
    2                     NULL
    2                     NULL

2 个答案:

答案 0 :(得分:2)

insert into SMEC_ODS.dbo.ODSMasterCustomerLink
(MasterCustomerID,CustomerBaseID)

values(1,515), (1,516), (1,517), (1,518), (1,519), (1,520), (1,521), (1,522)

有关在此article

中使用INSERT INTO的更多信息

答案 1 :(得分:1)

有时Sql server在单个查询中插入多个记录时显示错误...试试这个:

插入SMEC_ODS.dbo.ODSMasterCustomerLink (MasterCustomerID,CustomerBaseID) 值(1515)

插入SMEC_ODS.dbo.ODSMasterCustomerLink (MasterCustomerID,CustomerBaseID) 值(1516)

插入SMEC_ODS.dbo.ODSMasterCustomerLink (MasterCustomerID,CustomerBaseID) 值(1517)

插入SMEC_ODS.dbo.ODSMasterCustomerLink (MasterCustomerID,CustomerBaseID) 值(1518)

插入SMEC_ODS.dbo.ODSMasterCustomerLink (MasterCustomerID,CustomerBaseID) 值(1519)

插入SMEC_ODS.dbo.ODSMasterCustomerLink (MasterCustomerID,CustomerBaseID) 值(1520)

插入SMEC_ODS.dbo.ODSMasterCustomerLink (MasterCustomerID,CustomerBaseID) 值(1521)

插入SMEC_ODS.dbo.ODSMasterCustomerLink (MasterCustomerID,CustomerBaseID) 值(1522)