在SQL中获取非重复行

时间:2019-07-16 14:18:43

标签: sql-server duplicates row

我试图从数据库中获取非重复的行(主ID除外),但发现这样做有些困难,因为我正在急切地构建查询,并且由于某种原因,它无法正常工作。

假设我们具有以下条件:

id  product_id claim_id
1   2         3
2   2         3

所以我试图只获得一行。

基本上我的查询是:

SELECT *
  FROM TABLE 
 WHERE claim_id = 3

试图将GROUP BY Claim_id和product_id附加到查询中,但没有成功。 您对此有任何想法吗?

2 个答案:

答案 0 :(得分:0)

您可以添加distinct修饰符:

SELECT DISTINCT id, product_id, claim_id
FROM   mytable
WEHRE  claim_id = 3

答案 1 :(得分:0)

有时您还需要获取其中一个ID。例如,如果您只想保存非重复项,但是要保留一个键以联接到另一个表。我喜欢将窗口函数用于此类任务。

SELECT X.ID, X.product_id, X.claim_id
FROM 
(
    SELECT 
            ROW_NUMBER() OVER (PARTITION BY Product_id, Claim_id ORDER BY ID) AS row_num,
            ID,
            product_id,
            claim_id
    FROM dbo.TABLE
) AS X
WHERE x.row_num = 1