[英]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产品,如果不起作用,则仅可以删除该部分
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.