Прежде всего, я был на этом в течение 2 часов, и я провел полное исследование, прежде чем публиковать его здесь. Здесь есть похожие вопросы, но ни одна из них не соответствует моей проблеме (поэтому, пожалуйста, не отмечайте ее как дубликат).Удалите определенные повторяющиеся строки и сохраните один
У меня есть огромная таблица с более чем 100 000 записей, и я пытаюсь удалить определенные повторяющиеся строки.
Пример я следующие строки:
ID NAME NUMBER
1 'NIL' 1234
2 'NIL' 1234
3 'NIL' 1234
4 'MES' 5989
5 'NL' 1235
6 'NL' 12385
7 'NL' 1235
8 'MES' 5989
Ожидаемый результат (который ID сохранить или какой идентификатор для удаления не имеет значения):
ID NAME NUMBER
1 'NIL' 1234
2 'NIL' 1234
3 'NIL' 1234
4 'MES' 5989
5 'NL' 1235
6 'NL' 12385
Я попытался это:
DELETE FROM tableA
WHERE ID NOT IN
(
SELECT ID From (SELECT * FROM tableA) AS t1
WHERE PHONE NOT IN (1235,5989)
GROUP BY NAME, NUMBER
UNION
SELECT MIN(ID) From (SELECT * FROM tableA) AS t2
WHERE PHONE IN (1235,5989)
GROUP BY NAME, NUMBER
)
Приведенный выше запрос работает на тестовых данных 10 или 20 строк, но при применении к живой базе данных требуется возраст и сохраняется выборка (запрос был запущен с более чем 40 минут) Я не знаю, что я делаю неправильно. Любая помощь будет принята с благодарностью.
"(какой идентификатор должен содержать или какой идентификатор для удаления не имеет значения)" Он * должен * иметь значение! – Strawberry
Почему первые три строки не дублируются? – xdazz
@Strawberry Я согласен, но в моем случае это действительно не так. Спасибо –