我有以下表格,我想在产品重复的地方找到重复的商品,但是所需的规则是,一个必须只在products_old表中,第二个必须在products表中。因此,例如,如果有2个product_id 6的头寸,则不计算订单,但是当有5个和6个(共享相同的remote_id)时,它将出现在结果中。
Products_old表仅包含这些在ext_id列中具有空值的产品。
orders table:
order_id
9
10
11
12
order_details table:
order_id, product_id
9, 7
9, 8
10, 5
10, 6
11, 6
11, 7
11, 9
12, 8
12, 9
products table:
product_id, product_name, price, external_id
5, poteto, 4.99, null
6, potato, 7.5, 55
7, orange, 7.99, 77
8, green apple, 5.99, 88
9, gren-aple, 6.99, null
products_old table:
product_id, external_id
5, 55
9, 88
如果产品名称相同但只是ID不同,则使用此查询会很容易
select od.order_id
from order_details od join
products p
on od.product_id = p.product_id
group by od.order_id
having count(p.product_name) > count(distinct p.product_name)
到目前为止,我已经尝试了一些变体,但是现在我不知道如何解决这个问题,我收到了使用它的建议:
having count(coalesce(p.ext_id, p.product_id)) > count(distinct coalesce(p.ext_id, p.product_id))
但不幸的是,它对我不起作用。