【问题标题】:Postgres - SQL Query Delete based on another tablePostgres - 基于另一个表的 SQL 查询删除
【发布时间】:2018-03-10 05:12:00
【问题描述】:

我不知道如何将此查询转换为 DELETE 语句。

SELECT DISTINCT carts.id, shows.date from carts
INNER JOIN tickets on tickets.cart = carts.id
INNER JOIN actseats on actseats.ticket = tickets.id
INNER JOIN showacts on actseats.showact = showacts.id
INNER JOIN shows on shows.id = showacts.show
WHERE Shows.date >= '2017-05-05';

我从这个查询中得到的购物车是我要删除的。在删除语句中。

【问题讨论】:

  • 三个供应商?...

标签: mysql sql-server postgresql


【解决方案1】:
WITH val AS (
SELECT DISTINCT carts.id cartid, shows.date from carts

INNER JOIN tickets on tickets.cart = carts.id

INNER JOIN actseats on actseats.ticket = tickets.id

INNER JOIN showacts on actseats.showact = showacts.id

INNER JOIN shows on shows.id = showacts.show

WHERE Shows.date >= '2017-05-05' )
DELETE FROM carts WHERE carts.id IN (SELECT cartid FROM val)

【讨论】:

  • 假设这是因为使用从table 删除而不是从carts 删除而被否决。已更新。
【解决方案2】:

你可以试试

delete from carts where id in (SELECT DISTINCT carts.id from carts

INNER JOIN tickets on tickets.cart = carts.id

INNER JOIN actseats on actseats.ticket = tickets.id

INNER JOIN showacts on actseats.showact = showacts.id

INNER JOIN shows on shows.id = showacts.show

WHERE Shows.date >= '2017-05-05');

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    相关资源
    最近更新 更多