我不知道该怎么做

I can't figure out how to do this DISTINCT

早上好

我尝试并尝试理解为什么这个查询在分组依据上给出了常见的错误。我想找到重复的行并将其删除。我在 Microsoft 的 MSDN 上找到了这个查询,但尽管如此,它仍然在 Group By 上给我这个错误。 主 table 有 3 个字段“Id、Item、Description”,table 名称是“tlbDescription”,理论上该查询应该创建一个名为“duplicate_table”的 table在“duplicate_table”中插入重复值,然后从 table“tlbDescription”中删除值,最后删除 table“duplicate_table”。 如果有人能帮我一把 谢谢 法布里齐奥 这是查询:

SELECT DISTINCT *
INTO duplicate_table
FROM [tlbDescrizione]
GROUP BY [Articolo]
HAVING COUNT([Articolo]) > 1

DELETE [tlbDescrizione]
WHERE [Articolo]  IN (SELECT [Articolo] FROM duplicate_table)

INSERT [tlbDescrizione] 
SELECT * FROM duplicate_table

DROP TABLE duplicate_table

这个查询没有意义:

SELECT DISTINCT *
INTO duplicate_table
FROM [tlbDescrizione]
GROUP BY [Articolo]
HAVING COUNT([Articolo]) > 1;

它正在选择所有列,但由于 GROUP BY,它是一个聚合查询。因此,SELECT 列与 GROUP BY 列不一致,您会得到一个错误。

如果你想要所有的列,那么你可以使用 window 函数:

SELECT DISTINCT *
INTO duplicate_table
FROM (SELECT d.*, COUNT(*) OVER (PARTITION BY d.Articolo) as cnt
      FROM tlbDescrizione d
     ) d
WHERE cnt > 1;

或者,如果您只需要 ID:

SELECT Articolo
INTO duplicate_table
FROM tlbDescrizione
GROUP BY [Articolo]
HAVING COUNT(*) > 1;