首先,我不得不说我已经解决了很多问题,但是我找不到正确的答案。我看到有人问同样的问题。那里的主要问题是这样的:
DELETE FROM MyTable
LEFT OUTER JOIN (
SELECT MIN(RowId) as RowId, Col1, Col2, Col3
FROM MyTable
GROUP BY Col1, Col2, Col3
)
as KeepRows ON
MyTable.RowId = KeepRows.RowId
WHERE
KeepRows.RowId IS NULL
问题是,您选择一个最小或最大ID,并且上面或下面的所有重复值都将被删除。
现在我有一个约有5万行的数据库。有几百个重复的行。还有其他删除重复行的方法吗?除了1。
最后,我想从数据库中删除所有重复的行。一手一一不是一个选择,因为我们可能正在谈论一千行。我需要一个SQL查询(如果可能的话)来选择所有重复项。并删除除1之外的所有重复项。(重复项可以与行的描述相同。但是,行的相同名称也可以视为重复项)
此语句确实从我的数据库中选择了所有双打。现在,我需要像这样的东西来删除那些行。
SELECT
a.id, a.word, a.description,
b.id, b.word, b.description
FROM wordslist AS a
INNER JOIN wordslist AS b ON a.word = b.word
AND a.id != b.id;