【问题标题】:How can I insert query value to the column with existing data?如何将查询值插入到包含现有数据的列中?
【发布时间】:2021-10-19 16:04:00
【问题描述】:

我想将此查询插入新列,下面是我的查询:

INSERT INTO T_SG_WICA_POL_DATA (SubClassGroup)
SELECT M.[Subclass_Main] 
FROM [WICA subclass mapping] AS M
LEFT JOIN T_SG_WICA_TRANSACTION_VIEW ON M.[Subclass Code] = Subclass;

但我在尝试运行时收到此错误:

无法将值 NULL 插入到列“AccountTenure”、表“analytics.dbo.T_SG_WICA_POL_DATA”中;列不允许空值。插入失败。`

我想插入 SubClassGroup 列而不是 AccountTenure 列,所以我不确定为什么会出现此错误以及如何将值插入 SubClassGroup 列?

【问题讨论】:

  • 通过 not 提供 AccountTenure 作为目标列的一部分,但是,您正在定义您希望实例使用默认值,或者如果它不值一,NULL。显然是后者。如果您不提供 AccountTenure 列中的 INSERT,您希望 RDBMS 的值是多少?

标签: sql sql-server database insert


【解决方案1】:

通过使用 INSERT INTO 开始查询,您是在告诉系统在表中插入一个全新的行。您需要至少为每个未定义默认值或自动递增值且不可为空的列提供一个值。

INSERT INTO T_SG_WICA_POL_DATA (SubClassGroup, AccountTenure, ...)
SELECT M.Subclass_Main, M.AccountTenure, ... 
FROM [WICA subclass mapping] AS M

如果您想更新一个或多个现有表行中的一个或多个列的值,您可以使用更新查询:

UPDATE T_SG_WICA_POL_DATA SET SubClassGroup = M.Subclass_Main --, AccountTenure = M.AccountTenure, ...
FROM WICA subclass mapping AS M
JOIN T_SG_WICA_TRANSACTION_VIEW AS T ON M.[Subclass Code] = T.Subclass
--WHERE some_other_condition

请注意,我将左连接更改为常规连接,因为左连接不会对查询添加任何约束,从而导致更新应用于所有行,而不仅仅是 T_SG_WICA_TRANSACTION_VIEW 中存在匹配记录的行子类代码。

【讨论】:

    猜你喜欢
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    相关资源
    最近更新 更多