Access数据库中此更新的含义是什么?

时间:2018-04-05 00:36:52

标签: sql-server ms-access

我在Access数据库中有一个查询:

UPDATE A INNER JOIN (B INNER JOIN C ON B.Control = C.Control) ON A.ClientType = B.Type 
SET C.EstTime = ([A].[AvgTime])*60;

这是什么意思?我无法弄明白,经过一番搜索后无法找到答案。

似乎这不是在SQL Server中支持的。或者,也许我错过了什么?

由于

1 个答案:

答案 0 :(得分:1)

是的,由于一些原因它无效。一种是尝试设置C列,但说Update A。联接首先加入BC,然后将其作为单个结果集加入A,但我不认为当涉及的所有联接都是内部时,确实有理由这样做连接。如果要外连接两个或多个内连接表,可能会更常见。

以下是使用连接表的更新语句示例:https://blog.sqlauthority.com/2013/04/30/sql-server-update-from-select-statement-using-join-in-update-statement-multiple-tables-in-update-statement/

TL;博士

UPDATE Table1
SET Col2 = t2.Col2,
Col3 = t2.Col3
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.Col1 = t2.Col1
WHERE t1.Col1 IN (21, 31)

这是一个讨论组合连接类型语法的问题:SQL Server - Combining OUTER and INNER joins

TL;博士

select
*
from
a 
left outer join c
    inner join b on c.bID = b.ID
on a.cID = c.ID

SELECT * FROM ("purchased_items" p1
     INNER JOIN "purchase_orders" po1 ON (po1."id" = p1."purchase_order_id")) AS p4
LEFT OUTER JOIN (purchased_items p2
      INNER JOIN "purchase_orders" po2 ON (po2."id" = p2."purchase_order_id")) AS p5
ON (p4.item_variant_id = p5.item_variant_id AND p4.delivery_date < p5.delivery_date) 
WHERE p5.delivery_date IS NULL AND p4.delivered <> 0