【问题标题】:How to avoid duplicate records如何避免重复记录
【发布时间】:2015-05-20 07:10:32
【问题描述】:

我有三张桌子

1.Product
2.Category
3.Vendor
4.product_category

同一产品将分为两个类别,但我只想根据供应商显示一个。

例如: 产品表

vendor_id   | product_id    
---------|---------------
  1      | 1457          
  1      | 1457     

product_category 表

product_id | category_id

 1457      |  1
 1457      |  2     

product_id1457 将属于 1 类和 2 类,但我只想展示一次。我该怎么办?

【问题讨论】:

  • 做标准化。供应商应该是供应商表的 vendor_id 外键
  • 首先,如果您的产品可以属于多个类别,您应该通过添加productToCategory 表来使用多对多关系。其次,如果每个产品和供应商的行数超过一行,您如何决定保留哪一行?
  • GROUP BY,使用 MAX 或 MIN 选择类别。
  • 如果您需要帮助消除输出中的重复项,您不应该多解释一下输出吗?产生重复项的当前查询到底是什么?
  • 您好,感谢您的回复。我已经使用 max 和 group by

标签: sql sql-server-2012


【解决方案1】:

我已经使用 Max 和 group by

select a.product_id,a.product_title,b.vendor_name,max(d.category_id)as category_id, max(d.category_name) as category_name from product as inner join vendor as b on a.vendor_id=b.vendor_id inner join product_category as c on a.product_id=c.product_id inner join category as d on c.category_id=d.category_id where a.vendor_id=1 group by a.product_id,a.product_title,b.vendor_name

谢谢

塔尼盖维兰

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多