我试图从数据库中获取非重复的行(主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附加到查询中,但没有成功。 您对此有任何想法吗?
答案 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