如何使用 IN() 或 ANY() 将子查询的结果用作另一个子查询的输入

问题描述 投票:0回答:1

如何使用一个查询获取不同 ID 的列表,然后将此列表作为参数提供给 Postgres 中的另一个查询。

(SELECT DISTINCT id FROM inventory WHERE supplier_id = 37) AS idlist  
(SELECT SUM(item_price) FROM transaction WHERE person_id IN (idlist)) AS output
sql postgresql postgresql-9.5
1个回答
0
投票

您可以只使用您的 SELECT DISTINCT .... 查询作为第二个查询的 IN() 条件中的子查询。

即:

SELECT SUM(item_price) 
FROM transaction 
WHERE person_id 
IN 
(
    SELECT DISTINCT id 
    FROM inventory 
    WHERE supplier_id = 37
)

而且,在这种情况下,您不需要在该子查询中特别需要 DISTINCT 关键字

© www.soinside.com 2019 - 2024. All rights reserved.