如何从表中获取不同的信息

时间:2013-10-31 00:42:11

标签: sql

伙计我有下表名为产品的列名称是:

Product_ID
Category_ID
Product_Name
Brand
Quantity
Price

我糟透了sql查询,但是我需要一个查询,我可以使用它来获取Brand =“something”的所有产品但我不想重复,因为产品可以在多个Category_ID中 我尝试了以下但是没有用。

SELECT *
FROM products
WHERE Brand="Crystal Clear"
GROUP BY Category_ID
HAVING count(Product_Name)=1 

2 个答案:

答案 0 :(得分:1)

假设重复的产品具有匹配的Product_ID s

SELECT DISTINCT Product_ID, Product_Name, Quantity, Price 
FROM products 
WHERE Brand="Crystal Clear"

可能会为您提供所需的数据,但如果您对数据库的结构有任何控制权,我强烈建议您完全删除Category_ID列并将其替换为关系集,以便您不会复制products行只是为了在多个类别中获得相同的产品。从表结构中删除重复可能性的过程称为规范化,the wikipedia entry是一个不错的入门。


根据对其他答案的评论,我推断OP的Product_ID列是唯一的主键,不同类别的重复产品只能通过匹配Product_Name来识别,这将使查询有点复杂

SELECT Product_Name, SUM(Quantity), MAX(Price)
FROM products
WHERE Brand="Crystal Clear"
GROUP BY Product_Name

答案 1 :(得分:0)

我可能会像{realnumber3012那样使用SELECT DISTINCT,但你可以使用分组:

SELECT product_id, product_name
FROM products
WHERE Brand="Crystal Clear"
GROUP BY Product_id, product_name