使用其他表中的值查找重复项

时间:2019-01-31 17:00:54

标签: sql select

我有以下表格,我想在产品重复的地方找到重复的商品,但是所需的规则是,一个必须只在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))

但不幸的是,它对我不起作用。

0 个答案:

没有答案