SQL使用INNER JOIN删除重复项

时间:2014-06-04 22:34:09

标签: sql ms-access

我已经尝试了多种方法来摆脱查询结果中的所有重复项,但没有一项能够正常工作。我尝试了DISTINCTGROUP BY

DISTINCT根本不会做任何事情,GROUP BY我一直都会遇到错误。

我的查询:

SELECT        
   categorie.categorie_id AS categorie, 
   categorie.categorie_nummer, 
   categorie.naam, 
   product.product_id, product.product_naam, 
   foto.foto_id, foto.foto1, 
   item.prijs, item.item_id
FROM            
   ((((((categorie 
INNER JOIN 
   behoort_tot ON categorie.categorie_id = behoort_tot.categorie_id) 
INNER JOIN
   product ON behoort_tot.product_id = product.product_id) 
INNER JOIN
   heeft ON product.product_id = heeft.product_id) 
INNER JOIN
   foto ON heeft.foto_id = foto.foto_id) 
INNER JOIN
   is_een_1 ON product.product_id = is_een_1.product_id) 
INNER JOIN
   item ON is_een_1.item_id = item.item_id)
WHERE        
   (categorie.categorie_id = ?)

提前致谢

1 个答案:

答案 0 :(得分:0)

    WITH TEMP AS
       (

    SELECT categorie.categorie_id AS categorie, categorie.categorie_nummer, categorie.naam, 
    product.product_id, product.product_naam, foto.foto_id, foto.foto1, item.prijs, item.item_id,
    ROW_NUMBER()
        OVER (PARTITION BY categorie.categorie_id ORDER BY categorie.categorie_id) As ROW_NO


FROM            ((((((categorie INNER JOIN
                         behoort_tot ON categorie.categorie_id = behoort_tot.categorie_id) 
INNER JOIN
                         product ON behoort_tot.product_id = product.product_id) INNER JOIN
                         heeft ON product.product_id = heeft.product_id) INNER JOIN
                         foto ON heeft.foto_id = foto.foto_id) INNER JOIN
                         is_een_1 ON product.product_id = is_een_1.product_id) INNER JOIN
                         item ON is_een_1.item_id = item.item_id)

)
SELECT * FROM TEMP WHERE ROW_NO = 1;

我确实看到你正在尝试使用类别进行整理。试试这个。我用row_number函数对它进行排序,并假设你使用的是sql server