sql - SQL - 删除从查询结果中过滤的行
问题描述
从这篇出色的帖子https://stackoverflow.com/a/9755787/9502397我现在更好地理解了如何使用 Join 返回来自不同表的具有相似引用的结果列表。
运行 Select 查询后,我有该列表,如结果所示
select
a.OrderDate,
c.StaffID,
c.Activate
from
tbl_Order a
join tbl_OrderDetails b
on a.OrderID = b.OrderID
join tbl_Staff c
on b.StaffID = c.StaffID
where c.Activate = 'False'
但是,如何使用该结果列表并从 tbl_Order 中删除这些行?
解决方案
您可以使用该DELETE FROM WHERE ()IN ()
表单,它在您的代码中的外观如下:
DELETE FROM
tbl_Order k
WHERE (k.OrderID) IN (
SELECT
a.OrderID
FROM
tbl_Order a
JOIN tbl_OrderDetails b
ON a.OrderID = b.OrderID
JOIN tbl_Staff c
ON b.StaffID = c.StaffID
WHERE c.Activate = 'False' )
使用 SELECT 提取要删除的 OrderID,DELETE 的 WHERE 仅选择具有该 ID 将被删除的行。
推荐阅读
- python - 从 Python 中的句子中删除单词而不是子词
- c# - 编写函数(方法)打印出交易明细
- angular - Angular 7:如果存在值,则在 addControl 上触发值更改
- bash - 当 awk 中的模式规则不正确时执行的命令,有什么问题?
- haskell - 了解 Haskell 的懒惰
- c++ - 这段代码是否进行了多次实例化以及如何避免它?
- javascript - How to store login information for an api which requires Username - Password for the next session
- javascript - 获取周围坐标
- python - 如何将 PyTorch 张量更改为具有不同尺寸的一半大小和/或两倍大小?
- sql-server - 为维度实现临时表以跟踪更改