убрать повторы mysql php
Убрать повторы
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Убрать повторы из ComboBox-а
Здравствуйте, мне нужно убрать повторы с комбобокса, прикладываю исходник помогите пожалуйста.
Убрать повторы из списка
Здравствуйте! Требуется убрать повторы из списка List. Список наполнен адресами сайтов (например.
Как убрать повторы в richTextBox
Доброго времени суток! Возможно ли убрать повторы из richTB? И каким образом?Пож-та приведите.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Убрать повторы из списка фамилий
vector K; Form3->ListBox1->Items->Clear(); TStringList *l = new TStringList; string s.
Убрать повторы в списке с функцией in
Добрый день, помогите пожалуйста найти ошибку в программе. Она вроде легкая, но постоянно вылетают.
Убрать повторы в цикле StringGrid
Программа должна вывести в мемо Фамилии студентов, по критериям. Как сделать так, чтобы фамилии.
Как убрать повторы из ListBox
Есть ListBox с набором записей. Эти записи повторяются. Как убрать повторяющиеся записи. Подскажите.
Удалить повторяющиеся строки в MySQL
у меня есть таблица со следующими полями:
после выполнения этого запроса я могу удалить дубликаты с помощью сценария на стороне сервера.
но я хочу знать, можно ли это сделать только с помощью SQL-запроса.
17 ответов
очень простой способ сделать это, чтобы добавить UNIQUE индекс по 3 столбцам. Когда вы пишете ALTER заявление, включают IGNORE ключевое слово. Вот так:
это приведет к удалению всех повторяющихся строк. В качестве дополнительного преимущества, будущее INSERTs повторяющиеся ошибок. Как всегда, вы можете сделать резервную копию перед запуском чего-то подобного.
Если вы не хотите изменять свойства столбца, вы можете использовать запрос ниже.
поскольку у вас есть столбец с уникальными идентификаторами (например, auto_increment столбцы), вы можете использовать его для удаления дубликатов:
в MySQL, вы можете упростить его еще больше NULL-безопасный равный оператор (он же «оператор корабля»):
MySQL имеет ограничения относительно ссылки на таблицу, из которой вы удаляете. Вы можете обойти это с помощью временной таблицы, как:
из предложения Костаноса в комментариях:
Единственный медленный запрос выше-Удалить, для случаев, когда у вас очень большая база данных. Этот запрос может быть быстрее:
Если IGNORE оператор не будет работать, как в моем случае, вы можете использовать следующий оператор:
есть еще одно решение:
удаление дубликатов в таблицах MySQL является общей проблемой, это в целом результат отсутствующего ограничения, чтобы избежать этих дубликатов перед рукой. Но эта общая проблема обычно связана с конкретными потребностями. это требует конкретных подходов. Подход должен быть различным в зависимости от, например, размера данных, дублированной записи, которая должна храниться (как правило, первая или последняя), есть ли индексы, которые должны храниться, или мы хотим выполнить какие-либо дополнительные действие над дублированными данными.
есть также некоторые особенности самого MySQL, такие как невозможность ссылаться на ту же таблицу по причине FROM при выполнении обновления таблицы (это вызовет ошибку MySQL #1093). Это ограничение можно преодолеть с помощью внутреннего запроса с временной таблицей (как предложено в некоторых подходах выше). Но этот внутренний запрос не будет работать особенно хорошо при работе с большими источниками данных.
однако существует лучший подход к удалите дубликаты, это эффективно и надежно, и это может быть легко адаптировано к различным потребностям.
общая идея состоит в том, чтобы создать новую временную таблицу, обычно добавляя уникальное ограничение, чтобы избежать дальнейших дубликатов, и вставить данные из вашей бывшей таблицы в новую, заботясь о дубликатах. Этот подход основан на простых запросах вставки MySQL, создает новое ограничение, чтобы избежать дальнейших дубликатов, и пропускает необходимость использования внутреннего запроса к поиск дубликатов и временной таблицы, которая должна храниться в памяти (таким образом, также подходят большие источники данных).
вот как это может быть достигнуто. Учитывая, что у нас есть таблица сотрудник, со следующими столбцами:
для того, чтобы удалить строки с повторяющимися ssn столбец, и сохраняя только первую запись, можно выполнить следующий процесс:
технические объяснение
⇒ используя этот подход, регистры 1.6 M были преобразованы в 6k менее чем за 200 секунд.
Четан, следуя этому процессу, вы можете быстро и легко удалить все свои дубликаты и создать Уникальное ограничение путем запуска:
конечно, этот процесс может быть дополнительно изменен, чтобы адаптировать его для различных потребностей при удалении дубликатов. Ниже приводятся некоторые примеры.
✔ вариация для сохранения последней записи вместо первой
иногда нам нужно сохранить последнюю дублированную запись вместо первой.
✔ вариация для выполнения некоторых задач на дубликатах, например, подсчет найденных дубликатов
иногда нам нужно выполнить некоторую дальнейшую обработку дублированных записей, которые найдены (например, сохранение количества дубликатов).
✔ вариация для регенерации автоматического инкрементного поля id
иногда мы используем автоматическое инкрементное поле и, чтобы сохранить индекс как можно более компактным, мы можем воспользоваться удаление дубликатов для регенерации автоматически инкрементного поля в новой временной таблице.
✔ дальнейшие вариации
многие дальнейшие модификации также выполнимы в зависимости от желаемого поведения. В качестве примера в следующих запросах будет использоваться вторая временная таблица кроме того, 1) сохранить последнюю запись вместо первой; и 2) увеличить счетчик на найденных дубликатах; также 3) регенерировать идентификатор автоматического инкрементного поля, сохраняя порядок ввода, как это было на предыдущих данных.
у меня есть этот запрос snipet для SQLServer, но я думаю, что его можно использовать в других СУБД с небольшими изменениями:
Я забыл сказать вам, что этот запрос не удаляет строку с самым низким идентификатором дублированных строк. Если это работает для вас, попробуйте этот запрос:
Удаление повторяющихся строк в MySQL
у меня есть таблица со следующими полями:
после выполнения этого запроса я могу удалить дубликаты с помощью сценария на стороне сервера.
но я хочу знать, можно ли это сделать только с помощью SQL-запроса.
17 ответов:
очень простой способ сделать это, чтобы добавить UNIQUE индекс по 3 столбцам. Когда вы пишете ALTER заявление, включают IGNORE ключевое слово. Вот так:
это приведет к удалению всех повторяющихся строк. В качестве дополнительного преимущества, будущее INSERTs это дубликаты будет ошибка. Как всегда, вы можете сделать резервную копию, прежде чем запускать что-то вроде этого.
Если вы не хотите изменять свойства столбца, то вы можете использовать запрос ниже.
Так как у вас есть столбец, который имеет уникальные идентификаторы (например, auto_increment столбцы), вы можете использовать его для удаления дубликатов:
MySQL имеет ограничения относительно ссылки на таблицу, из которой вы удаляете. Вы можете обойти это с помощью временной таблицы, как:
из предложения Костаноса в комментариях:
Единственный медленный запрос выше-Удалить, для случаев, когда у вас очень большая база данных. Этот запрос может быть быстрее:
Если IGNORE оператор не будет работать, как в моем случае, вы можете использовать следующий оператор:
удаление дубликатов в таблицах MySQL является общей проблемой, которая обычно является результатом отсутствующего ограничения, чтобы избежать этих дубликатов перед рукой. Но эта общая проблема обычно приходит с конкретными потребностями. это требует конкретных подходов. Подход должен быть различным в зависимости, например, от размера данных, дублированной записи, которая должна быть сохранена (обычно первая или последняя), есть ли индексы, которые нужно сохранить, или мы хотим выполнить какие-либо дополнительные действия действие на дублированные данные.
есть также некоторые особенности на самом MySQL, такие как невозможность ссылаться на ту же таблицу по причине FROM при выполнении обновления таблицы (это вызовет ошибку MySQL #1093). Это ограничение может быть преодолено с помощью внутреннего запроса с временной таблицей (как предложено в некоторых подходах выше). Но этот внутренний запрос не будет работать особенно хорошо при работе с большими источниками данных.
тем не менее, лучший подход существует для удалите дубликаты, которые являются эффективными и надежными, и которые могут быть легко адаптированы к различным потребностям.
общая идея состоит в том, чтобы создать новую временную таблицу, обычно добавляя уникальное ограничение, чтобы избежать дальнейших дубликатов, и вставить данные из вашей бывшей таблицы в новую, заботясь о дубликатах. Этот подход полагается на простые запросы вставки MySQL, создает новое ограничение, чтобы избежать дальнейших дубликатов, и пропускает необходимость использования внутреннего запроса к поиск дубликатов и временной таблицы, которые должны храниться в памяти (таким образом, соответствующие большие источники данных тоже).
вот как это может быть достигнуто. Учитывая, что у нас есть таблица сотрудник, со следующими столбцами:
для того, чтобы удалить строки с повторяющимися ssn столбец, и сохраняя только первую найденную запись, можно выполнить следующий процесс:
технические объяснение
⇒ используя этот подход, 1,6 м регистров были преобразованы в 6k менее чем за 200 секунд.
Четан, после этого процесса, вы можете быстро и легко удалить все ваши дубликаты и создать Уникальное ограничение при запуске:
конечно, этот процесс может быть дополнительно изменен, чтобы адаптировать его для различных потребностей при удалении дубликатов. Ниже приводятся некоторые примеры.
✔ вариация для сохранения последней записи вместо первой
иногда нам нужно сохранить последнюю дублированную запись вместо первой.
✔ вариация для выполнения некоторых задач на дубликатах, например ведение учета найденных дубликатов
иногда нам нужно выполнить некоторую дальнейшую обработку дублированных записей, которые найдены (например, сохранение количества дубликатов).
✔ вариация для регенерации автоматического инкрементного поля id
иногда мы используем автоматическое инкрементное поле и, чтобы сохранить индекс как можно более компактным, мы можем воспользоваться об удалении дубликатов для восстановления автоматически добавочного поля в новой временной таблице.
✔ дальнейшие вариации
многие дальнейшие модификации также выполнимы в зависимости от желаемого поведения. В качестве примера в следующих запросах будет использоваться вторая временная таблица чтобы, кроме того, 1) сохранить последнюю запись вместо первой; и 2) увеличить счетчик на найденных дубликатах; также 3) регенерировать автоинкрементный идентификатор поля, сохраняя порядок ввода, как это было на прежних данных.
у меня есть этот запрос snipet для SQLServer, но я думаю, что он может быть использован в других СУБД с небольшими изменениями:
Я забыл сказать вам, что этот запрос не удаляет строку с самым низким идентификатором дублированных строк. Если это работает для вас попробуйте этот запрос:
MYSQL. Удалить дубли строк?
Есть таблика с 100.000 строк.
Нужно удалить дубли строк(именно строк а не ячеек)
то есть чтобы от таблицы:
Одну строчку (1 0) нужно удалить так как из было 2.
Можно ли это сделать запросом или без php не обойтись?
CREATE TEMPORARY TABLE tmp_tab AS SELECT DISTINCT * FROM your_table;
DELETE FROM your_table;
INSERT INTO your_table SELECT * FROM tmp_tab;
DROP TABLE tmp_tab;
Добавьте первичный ключ (id) а потом:
DELETE FROM table as me, table as clone WHERE me.c1 = clone.c1 AND me.c2 = clone.c2 AND me.id более трёх лет назад
Мне нравится такой способ:
Создаем таблицу dst с той же структурой, но добавляем цифровое поле DupCount
делаем запрос:
INSERT INTO dst SELECT * FROM src ON DUPLICATE KEY UPDATE dst.DupCount = dst.DupCount +1
DupCount для каждой строки будет содержать число встретившихся повторов.
Можно написать скрипт, который будет создавать таблицу dst, копировать таким образом туда данные, удалять исходную таблицу и переименовывать dst в src.
Как удалить дубликаты записей в базе данных mysql?
каков наилучший способ удаления дубликатов записей в базе данных mysql с помощью rails или mysql-запросов?
15 ответов
что вы можете сделать-это скопировать отдельные записи в новую таблицу:
вот еще одна идея в любом языке:
Edit:
спасибо Олаф для этого «иметь» подсказку 🙂
ну, если это небольшая таблица, из консоли Rails вы можете сделать
проверьте наличие дубликатов записей:
Удалить Повторяющиеся Запросы:
Если у вас есть PK (id) в таблице (EMP) и вы хотите удалить дубликаты записей с именем столбца. Для больших данных следующий запрос может быть хорошим подходом.
после этого мы видим, что все дублирование в поле удалено
Я должен сделайте это недавно на Oracle, но шаги были бы такими же на MySQL. Это было много данных, по крайней мере, по сравнению с тем, с чем я привык работать, поэтому мой процесс де-dup был сравнительно тяжелым. Я включаю его здесь, Если кто-то еще столкнется с подобной проблемой.
мои дубликаты записей имели разные идентификаторы, разные updated_at раз, возможно, разное updated_by IDs, но все остальные столбцы одинаковы. Я хотел сохранить больше всего. недавно обновлен любой дубликат набора.
я использовал комбинацию логики Rails и SQL, чтобы сделать это.
Шаг первый: запустите сценарий rake для идентификации идентификаторов повторяющихся записей, используя логику модели. Идентификаторы идут в текстовый файл.
Шаг второй: создайте временную таблицу с одним столбцом, идентификаторы для удаления, загруженные из текстового файла.
Шаг третий: создать еще одну временную таблицу со всеми записи, которые я собираюсь удалить (на всякий случай!).
Шаг четвертый: фактическое удаление.
вы можете использовать:
Если ваша таблица имеет PK (или вы можете легко дать ему один), вы можете указать любое количество столбцов в таблице равным (чтобы квалифицироваться как дубликат) со следующим запросом (может быть немного грязным, но он работает):
это оставит первую запись, введенную в базу данных, удалив «новейшие» дубликаты. Если вы хотите сохранить последнюю запись, переключите > в
в MySql, когда я ставлю что-то вроде
mySql сказал что-то вроде «Вы не можете использовать ту же таблицу в select части операции удаления.»