小编SNa*_*aRe的帖子

从 INNER JOINed 3 个不同表中删除所有行

我有一个疑问。我想删除这 3 个不同表中的所有选定行 由于我有很多 INNER 连接,我无法弄清楚。我的目标是删除这些卖家 ID 的所有内容。

SELECT *
FROM orders a
 INNER JOIN order_items b ON a.order_id = b.order_id
 INNER JOIN order_item_histories c ON c.order_item_id = b.order_item_id
WHERE a.seller_id IN (1, 3)
Run Code Online (Sandbox Code Playgroud)

版本 Postgres 10.3

我试过这个,但我无法成功。

DELETE
FROM  
   USING orders
   USING order_items,
   USING order_item_histories
WHERE orders.order_id = order_items.order_id AND order_items.order_item_id = order_item_histories.order_item_id
AND  orders.seller_id IN (1, 3)
Run Code Online (Sandbox Code Playgroud)

postgresql performance postgresql-10 query-performance

3
推荐指数
2
解决办法
1万
查看次数

在 WhereIN 条件下重复 COUNT

我有这个查询并且有效。但对我来说,它需要一些优化似乎很难看,因为我一遍又一遍地重复相同的动作。必须有更好的方法来合并所有这些

SELECT *
FROM
  (SELECT COUNT(*) AS a
   FROM order_item_histories
   WHERE order_status_id IN (5, 4, 15)) AS e,
  (SELECT COUNT(*) AS b
   FROM order_item_histories
   WHERE order_status_id IN (6)) AS f,
  (SELECT COUNT(*) AS c
   FROM order_item_histories
   WHERE order_status_id IN (4, 10, 9, 12, 7)) AS g,
  (SELECT COUNT(*) AS d
   FROM order_item_histories
   WHERE order_status_id IN (11, 16, 17, 13)) AS h
Run Code Online (Sandbox Code Playgroud)

postgresql optimization

2
推荐指数
1
解决办法
253
查看次数