使用3个表中的INNER JOIN进行UPDATE操作

时间:2019-07-14 10:05:24

标签: sql database libreoffice

我正在尝试更新一个表中的两个字段,并使用第三个表中的信息,该信息由第二个表引用。第三个表具有填充的“ weight”字段,我将更新第一个表的“ weight”字段。它们由“序列号”关联,但是在第一个表和第三个表中,该数字的格式不同。第二张表基本上是一种引用,每种格式都有“序列号”。

我创建了一个查询,该查询使用第二个表将第一和第三个表中的数据相关联以返回字段:

SELECT  
tbl_inv_main.invnum,
tbl_inv_main.model,
tbl_inv_main.serial,
tbl_viper_ref.reformattedserial,
tbl_mpn_viper.dryweight,
tbl_mpn_viper.wetweight
 FROM tbl_inv_main 
INNER JOIN tbl_viper_ref 
ON   tbl_inv_main.serial = tbl_viper_ref.serial
INNER JOIN tbl_mpn_viper
ON tbl_mpn_viper.serial = tbl_viper_ref.reformattedserial

但是现在我要做的基本上是相同的事情,只是用第三张表中的“权重”数据更新第一张表。

我尝试使用与查询中相同的INNER JOIN语句发出命令来更新第一个表。

到目前为止,我想出的是:

UPDATE "tbl_inv_main"
SET 
tbl_inv_main.dryweight = tbl_mpn_viper.dryweight,
tbl_inv_main.wetweight = tbl_mpn_viper.wetweight
FROM tbl_inv_main
INNER JOIN tbl_viper_ref 
ON   tbl_inv_main.serial =tbl_viper_ref.serial
INNER JOIN tbl_mpn_viper
ON tbl_mpn_viper.serial = tbl_viper_ref.reformattedserial

我从其他来源了解到,应该使用来自第三张表的记录中的数据来更新第一张表中的记录。

我正在使用libreoffice Base。当我尝试运行上述UPDATE命令时,出现以下错误:     找不到列:语句[UPDATE“ tbl_inv_main”中的DRYWEIGHT     组     tbl_inv_main.dryweight]

1 个答案:

答案 0 :(得分:0)

尝试一下:

UPDATE tbl_inv_main final
SET 
    final.dryweight = m.dryweight,
    final.wetweight = m.wetweight



FROM tbl_inv_main i
   INNER JOIN tbl_viper_ref v ON   i.serial =v.serial
   INNER JOIN tbl_mpn_viper m ON  v.reformattedserial = m.serial

   Where final.serial =i.serial