如何解决我不知道如何做到这一点
早上好
我试图理解为什么该查询在Group By上给出通常的错误。我想找到重复的行并将其删除。我在Microsoft的MSDN上找到了此查询,但是尽管如此,它仍然在Group By上给我这个错误。 主表具有3个字段“ Id,Item,Description”,表名称为“ tlbDescription”,该查询理论上应创建一个名为“ duplicate_table”的表,将重复值插入“ duplicate_table”内部,然后从表中删除该值“ tlbDescription”,最后删除表“ 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
列不一致,您会得到一个错误。
如果需要所有列,则可以使用窗口功能:
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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。