考虑到我有一个名为A的表。在其中我只有一个名为marks的列。 它有一些重复的值。如何在没有临时表的情况下删除重复值。 该表应包含一个重复的值。
答案 0 :(得分:1)
SELECT * 从内部加入A作为B. WHERE A.marks = B.marks;
这显示了重复的值(如果我没有犯错),那么也许你可以为DELETE做一个JOIN?
编辑:我试试这个,它不起作用,你的表中没有ID列吗? 像:
SELECT *
FROM A INNER JOIN A as B ON A.marks = B.marks
WHERE A.id != B.id;
答案 1 :(得分:0)
如果表中的两条记录相同,我不确定如何唯一地标识一条记录以删除该项目。 你能做的是:
在此表中添加一个id列,填充它然后调用:
从A中删除 在哪里( 不在 (SELECT MAX(id) 从A GROUP BY名称) )
然后您可以删除此列
答案 2 :(得分:0)
删除重复项susantosh是如此困难的原因是因为您没有在表中定义任何键,所以什么使您的任何行唯一? 你需要拿一本关于桌子设计的基本书,并意识到如果没有某种独特性,你就会疯狂地试图找出任何东西。
您可以做一些事情:
SELECT DISTINCT marks FROM TableName INTO NewTableName
这些只是您的一些选择,但如果不了解表格设计的基础知识,您将一遍又一遍地遇到此问题。
答案 3 :(得分:0)
WITH q AS
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY marks ORDER BY marks) AS rn
FROM a
)
DELETE
FROM q
WHERE rn > 1