我尝试使用另一个表中的数据进行UPDATE查询 在我的情况下,这是一个查询的结果,它看起来像这样:
UPDATE CalculatedQueryINNER JOIN Orders
ON CalculatedQuery.orderid = Orders.OrderID
SET Orders.TotalPrice = [CalculatedQuery].[calculated];
但它不起作用,它显示错误必须使用可更新的查询
但是我把查询中的结果复制到一个名为temp的表中,我也做了同样的工作!!
UPDATE temp INNER JOIN Orders
ON temp.orderid = Orders.OrderID
SET Orders.TotalPrice = [temp].[calculated];
任何人都可以向我提供有关如何将查询用作表格的解决方案 请?
编辑:我试图将查询看作是一个独立的表,这是我的问题,在更新查询无法访问时加入表不是问题
答案 0 :(得分:0)
我通过不同的网站阅读了很多内容 我介绍的问题在访问中无法解决。 更新查询存在问题,因为它们在访问时不是标准的。 问题是在访问中你不能在更新语句中使用另一个sql查询,因为我读取任何使用group by或join或select select等内容的查询。被标记为unupdateable查询,你不能使用它们。 正如我读到的那样,我发现了一些像我一样使用临时表的好解决方案 或者使用dlookup()函数。
答案 1 :(得分:0)
请记住,您还可以使用' FROM'执行DELETE和UPDATE语句,这将有助于以更熟悉的语法编写查询。鉴于您正在运行上面两个非常不同的更新语句,我在这里重写了它们。另外,鉴于您在两个语句上都使用了内连接,这两个语句执行数据的交叉,我按照更新的顺序重新排列了表格。
UPDATE O
SET [TotalPrice] = [T].[calculated]
FROM [Orders] AS O
INNER JOIN [temp] AS T
ON [T].[orderid] = [O].[OrderID];
UPDATE O
SET [TotalPrice] = [CQ].[calculated]
FROM [Orders] as O
INNER JOIN [CalculatedQuery] as CQ
ON [CQ].[orderid] = [O].[OrderID];
在这种语法中设置更新(以及同样删除)非常灵活,因为它允许另一个不错的功能:运行选择以查看将要更改的数据:
SELECT [O].[TotalPrice]
, [T].[calculated]
FROM [Orders] AS O
INNER JOIN [temp] AS T
ON [T].[orderid] = [O].[OrderID];
SELECT [O].[TotalPrice],
, [CQ].[calculated]
FROM [Orders] as O
INNER JOIN [CalculatedQuery] as CQ
ON [CQ].[orderid] = [O].[OrderID];