使用select将SQL插入到语句中

使用select将SQL插入到语句中,sql,sql-server,sql-insert,Sql,Sql Server,Sql Insert,我有一个表,表1,有7列。让我们把它们命名为C1到C7 列C3-C6允许空值 如何在将C7设置为值0的同时,将SQL insert语句写入表1,从不同的表(可引用)中获取C1和C2的值 现在,我有以下几点: INSERT INTO Table1 (C1, C2) SELECT @C1, C2 FROM ReferenceTable 这几乎完成了我需要的所有操作,除了用值0初始化C7。如何执行此操作?使用此插入查询: insert into table1 (c1,c2,c7) (select c

我有一个表,表1,有7列。让我们把它们命名为C1到C7

列C3-C6允许空值

如何在将C7设置为值0的同时,将SQL insert语句写入表1,从不同的表(可引用)中获取C1和C2的值

现在,我有以下几点:

INSERT INTO Table1 (C1, C2)
SELECT @C1, C2
FROM ReferenceTable

这几乎完成了我需要的所有操作,除了用值0初始化C7。如何执行此操作?

使用此插入查询:

insert into table1 (c1,c2,c7) (select c1,c2,0 from reftable)

您可以将0附加到
选择

INSERT INTO Table1 (C1, C2, C7)
SELECT C1, C2, 0
FROM ReferenceTable
或者,您可以将
C7
设置为默认值为0,这将是我的首选选项

ALTER TABLE Table1 
ALTER COLUMN C7 SET DEFAULT (0)
因此,如果没有插入任何内容,
C7
将始终为0

您将在设计器(在ManagementStudio中)中看到这一点,当您修改表时,您要查找的字段是默认值或绑定


编写不包含每一列(标识列除外)的INSERT语句是一种糟糕的做法。另外,您可以将C7设置为默认值0,并使其
不为NULL
。然后,如果不将其包含在INSERT语句中,它将默认为0。