Дополнительно
Поиск дубликатов значений в таблице SQL
Легко найти дубликаты с помощью одного поля:
SELECT name, COUNT(email)
FROM users
GROUP BY email
HAVING COUNT(email) > 1
Итак, если у нас есть таблица
ID NAME EMAIL
1 John asd@asd.com
2 Sam asd@asd.com
3 Tom asd@asd.com
4 Bob bob@asd.com
5 Tom asd@asd.com
Этот запрос даст нам John, Sam, Tom, Tom, Tom, потому что у них у всех одинаковый email
.
Однако я хочу получить дубликаты с одинаковой email
и name
.
То есть, я хочу получить "Том", "Том".
Причина, по которой мне это нужно: Я допустил ошибку и позволил вставить дубликаты значений name
и email
. Теперь мне нужно удалить/изменить дубликаты, поэтому мне нужно сначала найти их.
1777
29
Просто сгруппируйте оба столбца.
Примечание: по старому стандарту ANSI в GROUP BY должны быть все неагрегированные столбцы, но это изменилось с появлением идеи "функциональной зависимости":
Поддержка не является последовательной:
sql_mode=only_full_group_by
:попробуйте это:
ВЫХОД:
если вам нужны идентификаторы dups, используйте это:
OUTPUT:
для удаления дубликатов попробуйте:
OUTPUT:
Попробуйте это:
Если вы хотите удалить дубликаты, здесь'ы гораздо более простой способ сделать это, чем того, чтобы найти четных/нечетных строк в трех суб-выберите:
И так чтобы удалить:
Гораздо легче читать и понимать, ИМХО
Примечание: единственная проблема заключается в том, что вы должны выполнить запрос, пока нет рядов удален, поскольку вы удаляете только 1 из каждого дублировать каждый раз
Попробуйте следующее:
Немного опоздала на вечеринку, но я нашел очень крутой обходной путь, чтобы найти все повторяющиеся идентификаторы:
попробуйте этот код
Этот выбор/удаляет все повторяющиеся записи, за исключением одной записи из каждой группы дубликатов. Итак, удалить все уникальные записи + одна запись из каждой группы дубликатов.
Выберите продублирую:
Удалить дубликаты:
Быть в курсе большого количества записей, это может привести к проблемам с производительностью.
В случае, если вы работаете с Oracle, этот способ будет предпочтительным:
Если вы хотите, чтобы увидеть, если есть любые повторяющиеся строки в таблице, я использовал ниже запрос:
Это самая легкая вещь, которую я'вэ придумать. Он использует обобщенное табличное выражение (CTE) и окно перегородки (я думаю, что эти функции в SQL 2008 и позже).
В этом примере выполняется поиск всех студентов с одинаковыми имя и DOB. Поля, которые вы хотите проверить на дублирование перейти в пункт. Вы можете включать любые другие поля, которые вы хотите в проекции.
С помощью КТР также мы можем найти повторяющиеся значения такой
Как мы можем посчитать повторяющиеся значения?? либо он повторяется 2 раза или больше 2. просто подсчитайте их, а не группы мудр.
как просто, как
Выберите ID, функция count(ID) из таблицы table1 группы по ID, имеющих счета(идентификатор)>1;
Я думаю, что это будет работать должным образом на поиск повторяющихся значений в определенном столбце.
Это должно также работать, может дать ему попробовать.
Особенно хороши в вашем случае, если вы ищите дубликаты, которые имеют какой-то префикс или общие изменения, как, например, новый домен в Почте. затем вы можете использовать замените() на эти колонки