2013-03-13 63 views
3

我在SQL Server 2008上使用以下SQL查询来从productscategories表中选择行。避免SQL查询中出现重复行

SELECT products.idProduct, sku, description, listPrice, 
    smallImageUrl, isBundleMain, rental, visits 
FROM products, categories_products 
WHERE products.idProduct = categories_products.idProduct 
AND categories_products.idCategory = "& pIdCategory&" 
AND listHidden=0 
AND active=-1 
AND idStore = " &pIdStore& " 
ORDER BY description 

问题是某些行是重复的。那些副本通常由products.idProduct列确定,所以我想要更改查询以便相同的products.idProduct不会出现两次,例如,表示其中一个行具有products.idProduct = 3438,而另一行具有相同的产品ID以及仅有一个products.idProduct得到显示

+1

请确认您的选择列表,以便我们可以确定哪个字段来自哪个表(例如:tablename.sku,tablename.description等)。否则,不可能判断像某些人提出的DISTINCT是否会解决这个问题。另外,请提供样本结果集(显示重复记录)。 – Chains 2013-03-13 19:31:47

回答

4

您需要使用不同的。尝试下面

SELECT distinct 
    products.idProduct, sku, description, listPrice, smallImageUrl, 
    isBundleMain, rental, visits 
FROM products, categories_products 
WHERE products.idProduct=categories_products.idProduct 
    AND categories_products.idCategory="& pIdCategory&" 
    AND listHidden=0 AND active=-1 
    AND idStore=" &pIdStore& " 
ORDER BY description 
+0

感谢它工作很好 – user580950 2013-03-13 19:42:35

+0

最受欢迎。伟大的工作。 – DevelopmentIsMyPassion 2013-03-13 19:47:23

+0

[踢坏的习惯:使用旧式JOIN](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins。 aspx) - 使用ANSI - ** 92 ** SQL标准(** 20年前**!)废止旧式*逗号分隔的表*样式列表。 ***请***停止使用它 – 2013-03-13 20:21:24

0

使用DISTINCT如下图所示:

SELECT DISTINCT products.idProduct, 
     sku, description, listPrice, 
     smallImageUrl, isBundleMain, rental, visits 
FROM products, categories_products 
WHERE products.idProduct = categories_products.idProduct 
AND categories_products.idCategory = "& pIdCategory&" 
AND listHidden = 0 AND active = -1 
AND idStore =" &pIdStore& " 
ORDER BY description 
+0

[坏习惯踢:使用旧式JOIN](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins。 aspx) - 使用ANSI - ** 92 ** SQL标准(** 20年前**!)废止旧式*逗号分隔的表*样式列表。 ***请***停止使用它 – 2013-03-13 20:22:46