首页 > 解决方案 > 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 中删除这些行?

标签: sqllistdelete-row

解决方案


您可以使用该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 将被删除的行。


推荐阅读