我在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中支持的。或者,也许我错过了什么?
由于
答案 0 :(得分:1)
是的,由于一些原因它无效。一种是尝试设置C
列,但说Update A
。联接首先加入B
与C
,然后将其作为单个结果集加入A
,但我不认为当涉及的所有联接都是内部时,确实有理由这样做连接。如果要外连接两个或多个内连接表,可能会更常见。
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