powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Delete Duplicate Records
12 сообщений из 12, страница 1 из 1
Delete Duplicate Records
    #32486814
tpocp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
помогите чайнику с запросом на удаление повторных записей в таблице, поля:
varchar(20),
varchar(20),
date ,
time,
tinyint(3),
bigint(15),
enum('0','1')
Заранее благодарен.
...
Рейтинг: 0 / 0
Delete Duplicate Records
    #32486864
AlexPretov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
например, так
Код: plaintext
create table tbl2 as select distinct fld1, fld2, fld3 ... from tbl2;

________________
С уважением, Alex Pretov
...
Рейтинг: 0 / 0
Delete Duplicate Records
    #32486904
tpocp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е. создать временную таблицу tbl2 в нее влить результат по distinct из tbl1, затем убить все записи в tbl1 и влить из tbl2?
... а как насчет блокировок, транзакций и т.д., может кто поделится рабочим примером.
...
Рейтинг: 0 / 0
Delete Duplicate Records
    #32486963
AlexPretov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tpocp... а как насчет блокировок, транзакций и т.д., может кто поделится рабочим примером. а как насчет описывать сразу ограничения? Описать нормально задачу? Если стоит вопрос недопущения ввода дубликатов в таблицу это одно, если получения набора недублирующих записей, так это другое.

________________
С уважением, Alex Pretov
...
Рейтинг: 0 / 0
Delete Duplicate Records
    #32486966
tpocp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
посыпаю голову пеплом... повторюсь: я дилетант
пытаюсь написать функцию которая будет раз в сутки грохать дупликаты в таблице...
у меня получилось следующее:

$query1="create table table2 as select distinct fld1, fld2,... from table1";
$sth= $dbh->prepare($query1)
or die();
$sth->execute () or die();
$sth->finish;

$query2="delete from table1";
$sth= $dbh->prepare($query2)
or die();
$sth->execute () or die();
$sth->finish;

$query3="INSERT INTO table1 (fld1, fld2,...) select fld1, fld2,...from table2";
$sth= $dbh->prepare($query3) or die();
$sth->execute () or die();
$sth->finish;

$query4="drop table table2";
$sth= $dbh->prepare($query4) or die();
$sth->execute () or die();
$sth->finish;

$dbh->disconnect;

Вот и боюсь, что отвалится сервак в самый неподходящий момент...
...
Рейтинг: 0 / 0
Delete Duplicate Records
    #32486978
AlexPretov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. стоит первая задача -- недопущения ввода в таблицу дубликатов? И дубликат определяется по всем 7 полям? Не проще ли перенести это на приложение -- при вставке проверять существует-ли подобная запись и уже вставлять. Или можно задачу свести к уникальному полю, который объявить PRIMARY KEY?

________________
С уважением, Alex Pretov
...
Рейтинг: 0 / 0
Delete Duplicate Records
    #32486984
tpocp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторТ.е. стоит первая задача -- недопущения ввода в таблицу дубликатов? И дубликат определяется по всем 7 полям? Не проще ли перенести это на приложение -- при вставке проверять существует-ли подобная запись и уже вставлять. Или можно задачу свести к уникальному полю, который объявить PRIMARY KEY?
отчасти согласен... но при в вставке генерятся значения полей, и вот по ним нужно и проверять дубликаты... потом... ночью например... и грохать.
PRIMARY KEY - не подходит...
...
Рейтинг: 0 / 0
Delete Duplicate Records
    #32487150
Marat_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE TEMPORARY TABLE xxx 
SELECT DISTINCT * 
FORM таблица; 

TRUNCATE TABLE таблица; 

INSERT INTO TABLE таблица SELECT * FROM xxx; 
DROP TABLE xxx; 


Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
Delete Duplicate Records
    #32487324
tpocp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю за ответы.
...
Рейтинг: 0 / 0
Delete Duplicate Records
    #32487326
AlexPretov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
введем в таблицу еще одно поле new_fld и дадим ему значение по умолчанию 0. тогда твой скрипт обработки примет вид:

Код: plaintext
1.
insert into tbl from select distinct fld, fld2 .... ,  1  as new_fld from tbl where new_fld =0 ;
delete from tbl where new_fld =0 ;



________________
С уважением, Alex Pretov
...
Рейтинг: 0 / 0
Delete Duplicate Records
    #32487355
Marat_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это сработает в версиях не раньше 4.0.14

Жизнь коротка - потерпи немного :)
...
Рейтинг: 0 / 0
Delete Duplicate Records
    #32487869
tpocp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
к сожалению у нас 3.23.54
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Delete Duplicate Records
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]