使用INNER JOIN的HANA SQL脚本INSERT INTO无法插入值

时间:2018-11-20 11:34:47

标签: inner-join sql-insert hana-sql-script

我对SQL还是很陌生,希望您能对我的问题有所帮助。

我有一个名为Order_Status_Form_3的表,其中包含列Order_ID (KEY)Customer_IDCustomer_Unique_IDStatus(KEY)Date

该表已填充,但Customer_Unique_ID列除外。

要填充此列,我需要引用CustomerCustomer_ID链接的Customer_Unique_ID表,因此正确的ID覆盖正确的位置。当Customer_ID中的Order_Status_Form_3等于Customer_ID表中的Customer时,应将给定的Customer_Unique_ID插入{{1}中的Customer_Unique_ID列中}}。

我尝试将Order_Status_Form_3INSERT INTOSELECT组合在一起,但是收到一条错误消息,内容为:

  

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

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

这是我使用的代码:

INNER JOIN

我试图指定插入通过在末尾附加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

有人知道如何解决这个问题,可以告诉我我的错误在哪里吗?

预先感谢您阅读这个较长的问题并留下答案。

修改

我尝试使用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") 条件吗?

对不起,我很愚蠢。 :(

1 个答案:

答案 0 :(得分:0)

我可以按照评论说,您要执行的是运行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被定义为“非null”,因此在INSERT中,您必须为其提供一个值或将其定义为identity field in your HANA table定义

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

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