sql - 使用来自 3 个表的 INNER JOIN 进行 UPDATE 操作
问题描述
我正在尝试更新一个表中的两个字段,其中的信息位于第三个表上,该表由第二个表引用。第三个表有填充的“重量”字段,我要更新第一个表的“重量”字段。它们通过“序列号”相关联,但第一个和第三个表中的数字格式不同。第二个表基本上是在每种格式中都有“序列号”的参考。
我创建了一个查询,该查询使用第二个表从第一个和第三个表返回数据以关联字段:
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 基础。当我尝试运行上述 UPDATE 命令时,出现以下错误: Column not found: DRYWEIGHT in statement [ UPDATE "tbl_inv_main" SET tbl_inv_main.dryweight]
解决方案
尝试这个:
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
推荐阅读
- arrays - 数组和反转给出相同的结果但不相等
- javascript - 如何在反应中清空对象数组
- c# - 如何在同步方法中使用异步任务
- javascript - Angular - 为每个表格单元格生成唯一的 css id
- git - 有人在 origin 上删除了我的 master 分支。如何恢复分支并找到负责人
- visual-studio - 为 VIsual Studio 2017 Professional 安装 SSDT 时出错
- python - Python正则表达式查找双引号外的嵌套括号
- elixir - 无法在浏览器中启动 ejabberd
- database - 如何以低内存成本存储非常长的随机游走
- elasticsearch - 多级嵌套映射和查询上的“映射定义具有不受支持的参数”错误