繁体   English   中英

查找值重复的项目

[英]Find items with duplicated values

我想查找产品名称多次使用的订单。 在此示例中,结果应为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

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

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)

您可以在下面使用此

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

上面with..as结构的PS取决于您的DBMS产品,如果不起作用,则仅可以删除该部分

Rextester演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM