Удалить из таблицы только один раз

12
J
На сайте с 08.06.2006
Offline
844
1143

В таблице есть несколько одинаковых записей, но удалить нужно только один раз каждую запись, которая повторяется

Что-то на подобии

delete * from table where name='повтор' limit 1

Понятно, что в delete limit не заюзать.

Как можно оригинально без извращений это сделать?

Спасибо!

LEOnidUKG
На сайте с 25.11.2006
Offline
1730
#1
Понятно, что в delete limit не заюзать.

Почему?

---------- Добавлено 10.08.2017 в 17:08 ----------

Вообще самый быстрый способ ручной, это сделать в phpmyadmin запрос SELECT с GROUP BY столбец и выгрузку сразу на экспорт в sql файл. Далее очистить таблицу (конечно бэкап лучше сделать сначала) и импортировать файл.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
J
На сайте с 08.06.2006
Offline
844
#2
LEOnidUKG:
Почему?

в том виде как я записал

LEOnidUKG:
Вообще самый быстрый способ ручной, это сделать в phpmyadmin запрос SELECT с GROUP BY столбец и выгрузку сразу на экспорт в sql файл. Далее очистить таблицу (конечно бэкап лучше сделать сначала) и импортировать файл.

это должно делаться скриптом на автомате

---------- Добавлено 10.08.2017 в 17:13 ----------

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* from table where name='повтор' limit 1' at line 1

LEOnidUKG
На сайте с 25.11.2006
Offline
1730
#3

Ну тогда пишите скрипт с запросом:

SELECT COUNT(DISTINCT pid) FROM t GROUP BY pid

Это будет возвращать количество сгруппированных строк, если больше 1, тогда выполнять удаление.

S
На сайте с 30.09.2016
Offline
469
#4
joost:
в том виде как я записал

В том виде скорее * не катит, а не LIMIT.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
LEOnidUKG
На сайте с 25.11.2006
Offline
1730
#5
joost:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* from table where name='повтор' limit 1' at line 1

Выше уже написали, но всё же, читайте документацию: http://www.mysql.ru/docs/man/DELETE.html

Но ваш код всё равно снесёт НЕ дубль, если например случайно запустите второй раз.

S
На сайте с 30.09.2016
Offline
469
#6

это, кстати и написано в ошибке

S
На сайте с 23.05.2004
Offline
316
#7

Просто написать скрипт, который с group by выберет записи с дублями, а потом удалить где limit = count()-1 .

Это будет проще и быстрее. Хотя если есть желание, то перелить во временную таблицу очищенные данные, оригинальную грохнуть и залить туда временную , или же просто переименовать в оригинальную.

Это просто подпись.
edogs software
На сайте с 15.12.2005
Offline
775
#8
joost:
В таблице есть несколько одинаковых записей, но
удалить нужно только один раз каждую запись, которая повторяется
Что-то на подобии
delete * from table where name='повтор' limit 1

Понятно, что в delete limit не заюзать.
Как можно оригинально без извращений это сделать?
Спасибо!

По вопросу у нас было ощущение, что Вам надо удалить только

1 запись у записей, которые встречаются сколько угодно раз.

Но по ответам возникает ощущение, что задача была оставить только по одной уникальной записи.

Если вторая версия интерпретации задачи верна, то есть старый добрый способ

/ru/forum/comment/14085795

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
LEOnidUKG
На сайте с 25.11.2006
Offline
1730
#9
edogs:
По вопросу у нас было ощущение, что Вам надо удалить только
1 запись у записей, которые встречаются сколько угодно раз.
Но по ответам возникает ощущение, что задача была оставить только по одной уникальной записи.
Если вторая версия интерпретации задачи верна, то есть старый добрый способ
/ru/forum/comment/14085795

Вроде человек говорил, что у него постоянно может это случаться и тыркать туда сюда таблицу нерезон. Хотя, ХЗ что там на самом деле, мы лишь гадаем и выдаём варианты. Пусть сам выбирает.

J
На сайте с 08.06.2006
Offline
844
#10
edogs:
По вопросу у нас было ощущение, что Вам надо удалить только
1 запись у записей, которые встречаются сколько угодно раз.

Так и есть!

---------- Добавлено 11.08.2017 в 09:13 ----------

я что-то туплю снова

работает limit с delete

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий