在SQL中使用Union执行UPDATE
发布时间:2020-05-24 00:21:36 所属栏目:MsSql 来源:互联网
导读:如果我有这三个表(只是一个例子来学习UNION,这些不是真正的表): 表格及其列: Customer: id | name | order_statusOrder_Web:id | customer_id | order_filledOrder:id | customer_id | order_filled 我想在Order_Web表或使用Union的客户的Order表
|
如果我有这三个表(只是一个例子来学习UNION,这些不是真正的表): 表格及其列: Customer: id | name | order_status Order_Web: id | customer_id | order_filled Order: id | customer_id | order_filled 我想在Order_Web表或使用Union的客户的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和订单上使用Union来组合这两个更新? 使用Microsoft SQL Server Management Studio 解决方法你不需要UINION – 用一对外连接替换内连接应该这样做:UPDATE c SET c.order_status = 1 FROM Customer AS c LEFT OUTER JOIN Order_Web As ow ON c.id = ow.customer_id LEFT OUTER JOIN Order As o ON c.id = o.customer_id WHERE ow.order_filled = 1 OR o.order_filled = 1 您还可以使用WHERE EXISTS,如下所示: UPDATE c
SET c.order_status = 1
FROM Customer AS c
WHERE EXISTS (
SELECT 1 FROM Order_Web As ow WHERE c.id = ow.customer_id AND ow.order_filled = 1
) OR EXISTS (
SELECT 1 FROM Order As o WHERE c.id = o.customer_id AND o.order_filled = 1
)
如果必须使用UNION,可以按如下方式执行: UPDATE c
SET c.order_status = 1
FROM Customer AS c
WHERE c.id in (
SELECT ow.id FROM Order_Web As ow WHERE ow.order_filled = 1
UNION
SELECT o.id FROM Order As o WHERE o.order_filled = 1
)
或者与JOIN相同的人: UPDATE c
SET c.order_status = 1
FROM Customer AS c
JOIN (
SELECT ow.id AS id FROM Order_Web As ow WHERE ow.order_filled = 1
UNION
SELECT o.id AS id FROM Order As o WHERE o.order_filled = 1
) AS ids ON ids.id = c.id (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- MySQL中一些常用的数据表操作语句笔记
- SQL RANK()在连接表上的PARTITION上
- sql-server-2008 – 如何修改此t-sql查询以返回不同列名的最
- sql-server – 链接服务器问题.无法使用Windows身份验证作为
- LINQ to SQL:处理char(1)字段的方式会引起全表扫描问题
- SQL Server select into 和 insert into select 两种表复制
- Centos7 下Mysql5.7.19安装教程详解
- mysql修改用户密码的方法和mysql忘记密码的解决方法
- sqlserver数据库移动数据库路径的脚本示例
- sql-server – MSSQL – 在SELECT语句中定义列名,然后在WHE
