SQL 如果没有关系则删除行

SQL Delete row if no relationships present

我有一个采购订单 table 和一个商品 table,一个采购订单可以有很多商品,但我想删除所有没有商品的采购订单。在 SQL 中可以吗?

你可以使用 not exists.

假设您的 table 结构如下:

purchase_orders(id)
purchase_order_items(purchase_order_id)

table purchase_order_items 中的 purchase_order_id 是 table purchase_ordersid 的外键,看起来像:

delete from purchase_orders po
where not exists (
    select 1 from purchase_order_items poi where poi.purchase_order_id = po.id
)

当然可以。

delete from purchase_orders
    where not exists (select 1
                      from purchase_order_items poi
                      where poi.purchase_order_id = purcahse_orders.purchase_order_id
                     );