首页 > 解决方案 > 带有 INNER JOIN 的 HANA SQL 脚本 INSERT INTO 无法插入值

问题描述

我对 SQL 很陌生,希望你能帮助我解决我的问题。

我有一个名为、、和Order_Status_Form_3列的表。Order_ID (KEY)Customer_IDCustomer_Unique_IDStatus(KEY)Date

表格已填满,但Customer_Unique_ID列除外。

要填写此列,我需要引用链接到 的Customer表,因此正确的 ID 覆盖正确的位置。当in等于表中的 the 时,应将给定的值插入到 in 的列中。Customer_IDCustomer_Unique_IDCustomer_IDOrder_Status_Form_3Customer_IDCustomerCustomer_Unique_IDCustomer_Unique_IDOrder_Status_Form_3

我尝试将 aINSERT INTO与 a结合使用SELECTINNER JOIN但收到一条错误消息:

“无法插入 NULL 或更新为 NULL:Order_ID”。

我猜程序不清楚在哪里插入找到的值并尝试插入所有列。我搜索了类似的问题,但找不到针对我的具体问题的任何令人满意的答案。

这是我使用的代码:

Insert Into "HXE_109"."Order_Status_Form_3" ("Customer_Unique_ID") 
Select customer."customer_unique_id"
From "HXE_109"."Customer" As customer
Inner Join "HXE_109"."Order_Status_Form_3" As OrderStatus3
On OrderStatus3."Customer_ID" = customer."customer_id"

WHERE我试图通过在末尾附加 a 来指定插入值的位置,但收到了相同的错误。

Where OrderStatus3."Customer_ID" = customer."customer_id"

有谁知道如何解决这个问题并且可以告诉我我的错误在哪里?

提前感谢您阅读这个冗长的问题并留下答案。

编辑

我尝试使用update,但似乎我无法正确使用。

Update "HXE_109"."Order_Status_Form_3" Set "Customer_Unique_ID" = (Select customer."customer_unique_id" From "HXE_109"."Customer" As customer Inner Join "HXE_109"."Order_Status_Form_3" As OrderStatus3 On OrderStatus3."Customer_ID" = customer."customer_id") 现在我收到以下错误:

单行查询返回多于一行

我需要在这里使用Where条件吗?

对不起我的愚蠢。:(

标签: inner-joinsql-inserthana-sql-script

解决方案


正如我可以关注的评论一样,您想要做的是运行 UPDATE 语句

请检查以下 DML 命令

Update "HXE_109"."Order_Status_Form_3" 
Set 
    "Customer_Unique_ID" = customer."customer_unique_id"
From "HXE_109"."Order_Status_Form_3" As OrderStatus3
Inner Join "HXE_109"."Customer" As customer
    On OrderStatus3."Customer_ID" = customer."customer_id"

如果我尝试解释错误消息:

“无法插入 NULL 或更新为 NULL:Order_ID”。

这与定义为 NOT NULL 的字段有关。因此,在您的目标表中 ORDER_ID 被定义为“非空”,因此在 INSERT 中您必须为其提供一个值或将其定义为您的 HANA 表定义中的标识字段

第二个错误:单行查询返回多行

这与 SQL 引擎期望一个值而不是一组值的情况有关。因此,您将结果分配给 Customer_Unique_ID 字段的 SELECT 语句返回超过 1 个值。在这种情况下,SQL 引擎会引发异常


推荐阅读