一个SQL问题,一个订单中有多个产品

时间:2020-03-13 13:13:17

标签: sql oracle group-by

一个SQL问题,一个订单中有多个产品。您想查询所有订单信息,包括产品a,产品B和产品C。非常感谢您的帮助 数据库:oracle 订单明细

orderNo  goods 
1001     A
1001    B
1001     C
1001     D
1002    A
1003     A1
1003    B1
1003     C
1003     D
1004    A

………… 如何找到1001?

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您可以使用聚合,并使用having子句进行过滤:

select order_no
from order_details
where goods in ('A', 'B', 'C')
group by order_no
having count(*) = 3

如果相同的goods对于给定的order_no可能会出现多次,则您需要having count(distinct goods) = 3而不是having count(*) = 3

答案 1 :(得分:0)

您需要GROUP BYHAVING如下:

SELECT ORDERNO
FROM YOUR_TABLE
WHERE
    GOODS IN ( 'A', 'B', 'C')
GROUP BY ORDERNO
HAVING COUNT(DISTINCT GOODS) = 3

干杯!

相关问题