Sql 如何在更新查询中使用另一个表\查询

Sql 如何在更新查询中使用另一个表\查询,sql,sql-update,project,ms-access-2013,Sql,Sql Update,Project,Ms Access 2013,我尝试使用另一个表中的数据进行更新查询 在我的例子中,这是一个查询的结果,看起来是这样的: UPDATE CalculatedQueryINNER JOIN Orders ON CalculatedQuery.orderid = Orders.OrderID SET Orders.TotalPrice = [CalculatedQuery].[calculated]; 但它不起作用,它显示错误必须使用可更新的查询 但是我把查询的结果复制到一个名为temp的表中,我也这样做了,结果成功了 U

我尝试使用另一个表中的数据进行更新查询 在我的例子中,这是一个查询的结果,看起来是这样的:

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];
有谁能给我提供一个关于如何将查询用作表的解决方案吗 求你了


编辑:我试着把一个查询当作一个表来处理,这是我的问题,在更新查询中连接表不是问题 我介绍的问题在access中无法解决。 更新查询存在问题,因为它们在access中不是标准查询。 问题是,在access中,您不能在update语句中使用另一个sql查询,因为当我阅读任何使用group by、join或select等的查询时。。标记为不可更新的查询,您无法使用它们。 当我阅读时,我发现了一些很好的解决方案,像我一样使用了一个临时表
或者使用dlookup函数。

请记住,您还可以使用“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以查看哪些数据将被更改:

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];

更新临时表有什么用?如果要更改表,请向我们显示您的数据库结构,以及要根据哪种条件更改哪些行。