2013-03-13 65 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