我不知道该怎么做
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;
早上好
我尝试并尝试理解为什么这个查询在分组依据上给出了常见的错误。我想找到重复的行并将其删除。我在 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;