【问题标题】:SQL insert into statement using selectSQL 使用 select 插入语句
【发布时间】:2014-07-24 16:44:19
【问题描述】:

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

C3-C6 列允许 NULL 值。

如何将 SQL 插入语句写入 Table1,该语句将从不同的表 (ReferenceTable) 中获取 C1 和 C2 的值,同时将 C7 设置为值 0?

现在,我有以下内容:

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

这几乎完成了我需要的一切,除了用值 0 初始化 C7。我该怎么做呢?

【问题讨论】:

  • 编写不包括每一列(标识列除外)的 INSERT 语句是一种不好的做法。此外,您可以将 C7 设为默认值 0 并将其设为 NOT NULL。然后,当您不将其包含在 INSERT 语句中时,它将默认为 0。

标签: sql sql-server sql-insert


【解决方案1】:

使用这个插入查询:

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

【讨论】:

    【解决方案2】:

    您可以将 0 附加到 SELECT...

    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。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多