如果我有这三个表(只是为了学习 UNION 的一个例子,这些不是真正的表):
表格及其列:
Customer:
id | name | order_status
Order_Web:
id | customer_id | order_filled
Order:
id | customer_id | order_filled
当使用 Union 为该客户填写 Order_Web 表或 Order 表时,我想更新 Customer 表中的 order_status:
UPDATE c
SET c.order_status = 1
FROM Customer AS c
INNER JOIN Order_Web As ow
ON c.id = ow.customer_id
WHERE ow.order_filled = 1
UPDATE c
SET c.order_status = 1
FROM Customer AS c
INNER JOIN Order As o
ON c.id = o.customer_id
WHERE o.order_filled = 1
如何使用 order_web 和 order 上的 Union 组合这两个更新?
使用 Microsoft SQL Server Management Studio
原文由 Jaiesh_bhai 发布,翻译遵循 CC BY-SA 4.0 许可协议
您不需要
UNION
为此 - 用一对外部联接替换内部联接应该这样做:您也可以使用
WHERE EXISTS
,如下所示:如果你必须使用
UNION
,你可以这样做:或带有
JOIN
的同一个: