Access 2016查询同表同列减法

问题描述

我有一个包含值的表,我需要计算一个字段,其中两行值相减,我已经编写了以下查询,但它不起作用并且通过了 JOIN 错误

UPDATE TempTbl,((SELECT TempTbl.Cal_Value FROM TempTbl WHERE (((TempTbl.PHD_TAG)="31FC1064.PV")))-(SELECT TempTbl.Cal_Value FROM TempTbl WHERE (((TempTbl.PHD_TAG)="31FC2064.PV")))) AS A SET TempTbl.Cal_Value = "A"
WHERE (((TempTbl.ASSET_DESC)="OAG net flaring"));

感谢您的帮助

解决方法

您的连接表必须是表而不是值

另外你必须注意,你的子选择总是只返回 1 个值,否则你会得到 ab 错误

此版本适用于 MySQL

UPDATE 
TempTbl,(SELECT
           (SELECT TempTbl.Cal_Value FROM TempTbl WHERE TempTbl.PHD_TAG ="31FC1064.PV" LIMIT 1)
           - (SELECT TempTbl.Cal_Value FROM TempTbl WHERE TempTbl.PHD_TAG="31FC2064.PV" LIMIT 1)
           ) AS A 
SET TempTbl.Cal_Value = "A"
WHERE (TempTbl.ASSET_DESC="OAG net flaring");

这是访问权限

UPDATE 
TempTbl,(SELECT
           (SELECT TOP 1 TempTbl.Cal_Value FROM TempTbl WHERE TempTbl.PHD_TAG ="31FC1064.PV" )
           - (SELECT TOP 1 TempTbl.Cal_Value FROM TempTbl WHERE TempTbl.PHD_TAG="31FC2064.PV" )
           FROM TempTbl) AS A 
SET TempTbl.Cal_Value = "A"
WHERE (TempTbl.ASSET_DESC="OAG net flaring");

我在这个 shouölb 中添加了一个版本,提示您如何进行此类查询

UPDATE 
TempTbl INNER JOIN (SELECT TempTbl.ASSET_DESC,(SELECT TOP 1 TempTbl.Cal_Value FROM TempTbl WHERE TempTbl.PHD_TAG ="31FC1064.PV" )
-(SELECT TOP 1 TempTbl.Cal_Value FROM TempTbl WHERE TempTbl.PHD_TAG ="31FC1064.PV" )
FROM TempTbl
WHERE (((TempTbl.PHD_TAG)="31FC1064.PV"))
) AS A ON A.ASSET_DESC = TempTbl.ASSET_DESC
SET TempTbl.Cal_Value = "A"
WHERE (TempTbl.ASSET_DESC="OAG net flaring");