我有一个疑问。我想删除这 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) 我有这个查询并且有效。但对我来说,它需要一些优化似乎很难看,因为我一遍又一遍地重复相同的动作。必须有更好的方法来合并所有这些
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)