想知道是否有人可以帮我解决这个问题。我有一个表和一个查询,它们都具有相同的[资源ID],[资源名称]字段。我正在尝试使用查询的[CBL_x_Date]和[CBL_x_kW]字段更新表中的[CBL_1_Date]和[CBL_1_kW]字段。问题是当我尝试运行查询时,我不断收到“操作必须使用可更新的查询”错误。
UPDATE tCBLAggregation
INNER JOIN qBestof4CBLs_avg
ON (tCBLAggregation.[Event Date] = qBestof4CBLs_avg.[Event Start Date])
AND
(tCBLAggregation.[Resource ID] = qBestof4CBLs_avg.[Resource ID])
SET tCBLAggregation.CBL_1_Date = [qBestof4CBLs_avg].[CBL_x_Date], tCBLAggregation.CBL_1_kW = [qBestof4CBLs_avg].[AvgOfCBL_x_kW];
答案 0 :(得分:0)
如果您对qBestof4CBLs_avg
使用子查询,那么您不会尝试更新不可更新的表表达式。
在ANSI SQL中(例如:PostgreSQL / SQL Server):
UPDATE "tCBLAggregation"
SET "CBL_1_Date" = v.d,
"CBL_1_kW" = v.x
FROM (
SELECT "Event Start Date" as esd,
"Resource ID" as rid,
"CBL_x_Date" as d,
"AvgOfCBL_x_kW" as x
FROM "qBestof4CBLs_avg"
) v
WHERE "Event Date" = v.esd
AND "Resource ID" = v.rid;
在任何合理的ANSI SQL兼容数据库中应该非常相似。
在反思中,UPDATE ... INNER JOIN
看起来可能是MySQL(不太合规)。
请参阅@ this SO question中@Eric的答案,了解其他数据库的翻译。
编辑:在子查询中删除了令人困惑的x
表别名。