Postgresql 哪些订单包括产品2和16?我尝试了几种方法来解决这个问题,但没有';t在psql中工作

Postgresql 哪些订单包括产品2和16?我尝试了几种方法来解决这个问题,但没有';t在psql中工作,postgresql,Postgresql,指向my db的链接是:您可以使用两个存在的条件以及相关子查询过滤订单表: SELECT O.ORDER_ID,O.PRODUCT_ID,OD.ORDER_ID,OD.PRODUCT_ID FROM ORDER_DETAILS AS O , (SELECT PRODUCT_ID,ORDER_ID FROM ORDER_DETAILS) AS OD WHERE O.PRODUCT_ID=2 AND OD.PRODUCT_ID=16; 为了提高性能,

指向my db的链接是:

您可以使用两个
存在的
条件以及相关子查询过滤
订单
表:

 SELECT  O.ORDER_ID,O.PRODUCT_ID,OD.ORDER_ID,OD.PRODUCT_ID
    FROM ORDER_DETAILS AS O , (SELECT PRODUCT_ID,ORDER_ID FROM ORDER_DETAILS) AS OD
                  WHERE O.PRODUCT_ID=2 AND OD.PRODUCT_ID=16;
为了提高性能,您需要在
订单详细信息(订单id、产品id)
上建立索引

中,返回5个订单:

select o.*
from orders o
where 
    exists (
        select 1
        from order_details od
        where od.order_id = o.order_id and od.product_id = 2
    )
    and exists (
        select 1
        from order_details od
        where od.order_id = o.order_id and od.product_id = 16
    )

您可以使用两个具有相关子查询的
存在
条件筛选
订单
表:

 SELECT  O.ORDER_ID,O.PRODUCT_ID,OD.ORDER_ID,OD.PRODUCT_ID
    FROM ORDER_DETAILS AS O , (SELECT PRODUCT_ID,ORDER_ID FROM ORDER_DETAILS) AS OD
                  WHERE O.PRODUCT_ID=2 AND OD.PRODUCT_ID=16;
为了提高性能,您需要在
订单详细信息(订单id、产品id)
上建立索引

中,返回5个订单:

select o.*
from orders o
where 
    exists (
        select 1
        from order_details od
        where od.order_id = o.order_id and od.product_id = 2
    )
    and exists (
        select 1
        from order_details od
        where od.order_id = o.order_id and od.product_id = 16
    )

你的预期结果是什么?你的预期结果是什么?