查找值重复的项目

时间:2019-01-30 12:10:32

标签: sql select

我想查找订单,其中多次使用产品名称。在此示例中,结果应为order_id 10

表格:

Orders 
order_id
9
10
11

Order_details 
order_id, product_id  
9,        7    
10,       5
10,       6
11,       6
11,       7

Products 
product_id, product_name, price
5,          potato,       4.99
6,          potato,       7.5
7,          orange,       7.99

2 个答案:

答案 0 :(得分:2)

如果只需要订单,则可以比较具有有效产品名称的行数和不同产品名称的数目。如果所有产品名称都是唯一的,则计数是相同的。如果它们不同,则某处重复:

select ol.order_id
from order_lines ol join
     products p
     on ol.product_id = p.product_id
group by ol.order_id
having count(p.product_name) > count(distinct p.product_name)

答案 1 :(得分:0)

您可以在下面使用此

with Order_details(order_id, product_id) as
(
 select  9,7    union all
 select 10,5    union all
 select 10,6    union all
 select 11,6    union all
 select 11,7
),
 Products(product_id, product_name, price) as
(
 select 5, 'potato', 4.99 union all
 select 6, 'potato', 7.5  union all
 select 7, 'orange', 7.99
)    
select o.order_id, p.product_name
  from order_details o
  join products p on o.product_id = p.product_id
 group by o.order_id, p.product_name
having count(p.product_name) > 1;

order_id  product_name
--------  ------------
   10       potato

P.S。 with..as上面的结构取决于您的DBMS产品,如果不起作用,可能仅将其删除

Rextester Demo