mysql - 更新(子查询)设置.....MariaDB(MySQL)中的表达式

标签 mysql stored-procedures mariadb

我正在尝试将 MS Sql 存储过程转换为 MariaDB 存储过程。

这是Mariadb(Mysql)存储过程的一部分,我转换如下:

DROP TEMPORARY TABLE IF EXISTS tt_tmpTable;  
   CREATE TEMPORARY TABLE tt_tmpTable
   (
      FNewID VARCHAR(11), 
      FOrderID VARCHAR(10), 
      FMasterYN VARCHAR(1),
      FpcherCd VARCHAR(5), 
      FpcherNm VARCHAR(50), 
      FvndCd VARCHAR(7), 
      FvndNm VARCHAR(50), 
      FStep VARCHAR(5),
      FrequestDt VARCHAR(8), 
      FConfirmDt VARCHAR(8), 
      FAmount NUMERIC(21,2), 
      FitemCd VARCHAR(6), 
      FitemNm VARCHAR(100),
      Fqty INT, 
      FCost NUMERIC(21,2), 
      FTotalCost NUMERIC(21,2), 
      FAddAmt NUMERIC(21,2), 
      FAddMemo VARCHAR(255), 
      FItemDiv VARCHAR(20),
      FMemo VARCHAR(255)
   );

        UPDATE (select FOrderID FID, sum(FTotalCost) FAMT from tt_tmpTable where FMasterYN = 'N' group by FOrderID) t 
        set tt_tmpTable.FAmount = t.FAMT where FOrderID = t.FID;

但它不起作用并收到错误“错误代码:1288 UPDATE的目标表t不可更新”。

所以我想知道是否有人能帮我解决这个问题。

最佳答案

您需要将 tt_tmpTable 声明为“t”(见下文)...

SELECT FOrderID AS FID, SUM(FTotalCost) AS FAMT FROM tt_tmpTable t WHERE...

关于mysql - 更新(子查询)设置.....MariaDB(MySQL)中的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36586854/

相关文章:

MySql:限制一张表中某一列的更新权限

php - 当数据库发生变化时自动更改 html 项目

mysql - django admin 中的 MultipleObjectsReturned 错误 - 但数据库中没有重复项

mysql - 输出组与条件语句连接

asp.net - 如何传递单选按钮值来过滤数据

php - PDO 和 MySQL 存储过程。不返回参数

mysql - 在 MariaDB v. 10.1.xx 中将 VARCHAR 数据转换为 DATE

PHP 登录页面错误

c# - 调用多个存储过程最快的代码是什么?

mysql - 在重叠集上执行并发级联更新查询时是否需要显式行锁?