我正在尝试将 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/