避免SQL查询中的重复行

use*_*950 4 sql t-sql sql-server-2008

我在SQL Server 2008上使用以下SQL查询来从productscategories表中选择行.

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
Run Code Online (Sandbox Code Playgroud)

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

Dev*_*ion 6

你需要使用不同的.试试以下

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
Run Code Online (Sandbox Code Playgroud)

  • 要改掉的坏习惯:当存在潜在的数据质量或建模问题时使用 DISTINCT。我会说这是一个比连接语法更糟糕的习惯。 (2认同)