-1

伙计们,我有一个名为 products 的下表,列名是:

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 
4

3 回答 3

1

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

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

可能会为您提供所需的数据,但如果您对数据库的结构有任何控制权,我强烈建议您Category_ID完全摆脱该列并用关系集替换它,这样您就不会复制products行只是为了在多个类别中获得相同的产品。从表结构中消除重复可能性的过程称为规范化,对此维基百科条目是一个不错的入门。


从其他答案的评论中,我推断OP的Product_ID列是唯一的主键,不同类别的重复产品只能通过matching来识别Product_Name,这会使查询稍微复杂一些

SELECT Product_Name, SUM(Quantity), MAX(Price)
FROM products
WHERE Brand="Crystal Clear"
GROUP BY Product_Name
于 2013-10-31T00:51:29.197 回答
1
SELECT DISTINCT product_id, product_name
FROM products
WHERE Brand="Crystal Clear"
于 2013-10-31T00:45:01.037 回答
0

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

SELECT product_id, product_name
FROM products
WHERE Brand="Crystal Clear"
GROUP BY Product_id, product_name
于 2013-10-31T00:52:22.063 回答