Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Удаление дублей по условию / 23 сообщений из 23, страница 1 из 1
17.05.2017, 05:46
    #39454250
dmr55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
Нужно из таблицы удалить все дубликаты по столбцу Gik

Wet id Gik
5 1 r
8 2 e
9 3 r
6 4 e
2 5 c
...
Рейтинг: 0 / 0
17.05.2017, 06:40
    #39454259
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
И что не получается?
...
Рейтинг: 0 / 0
17.05.2017, 06:51
    #39454264
dmr55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
мой вариант
DELETE t1 FROM `tab` t1, `tab` t2 WHERE t1.Gic =t2. Gic AND t1.id > t2. id;
...
Рейтинг: 0 / 0
17.05.2017, 06:53
    #39454265
dmr55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
точнее
DELETE t1 FROM `tab` t1, `tab` t2 WHERE t1.Gik =t2. Gik AND t1.id > t2. id;
...
Рейтинг: 0 / 0
17.05.2017, 07:12
    #39454270
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
t1.Gik =t2. Gik - ты сравнил одно и то же (Наличие пробела отношу к проблеме синтаксиса)
t1.id > t2. id - аналогично
...
Рейтинг: 0 / 0
17.05.2017, 07:16
    #39454271
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
А "Удалить дубликаты" по твоему это:
1. Удалить все записи, в которых поле Gik имеет неуникальное значение.
На твоем примере останется только последняя запись с id =5)
2. Оставить только одну из записей с неуникальным Gik
Во втором варианте возникает естественный вопрос - какую из записей оставлять?
...
Рейтинг: 0 / 0
17.05.2017, 07:27
    #39454274
dmr55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
1
DELETE t1 FROM `tab` t1, `tab` t2 WHERE t1.Gik =t2. Gik AND t1.id > t2. id;
по данному запросу результат такой
Wet id Gik
5 1 r
8 2 e
2 5 c

2
Да нужно оставить только одну запись с уникальным Gik
Нужно из таблицы удалить все дубли по столбцу Gik
...
Рейтинг: 0 / 0
17.05.2017, 07:35
    #39454277
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
dmr55точнее
DELETE t1 FROM `tab` t1, `tab` t2 WHERE t1.Gik =t2. Gik AND t1.id > t2. id;

+
Посмотрел синтаксис DELETE в MySQL. Сильно удивился.
Но если предположит tab это таблица с дублями, то её надо сначала сформировать.
А если это зеркало `t1`, то надо подумать, как это будет работать при затроении/зачетверении.
...
Рейтинг: 0 / 0
17.05.2017, 07:36
    #39454279
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
dmr551
Да нужно оставить только одну запись с уникальным Gik

Какую именно. Их две. И они разные.
...
Рейтинг: 0 / 0
17.05.2017, 07:38
    #39454282
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
dmr551
DELETE t1 FROM `tab` t1, `tab` t2 WHERE t1.Gik =t2. Gik AND t1.id > t2. id;
по данному запросу результат такой
Wet id Gik
5 1 r
8 2 e
2 5 c

Результат должен быть таким,
или ты получил такой результат, и им недоволен?
...
Рейтинг: 0 / 0
17.05.2017, 07:38
    #39454283
dmr55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
Таблица одна
...
Рейтинг: 0 / 0
17.05.2017, 07:41
    #39454285
dmr55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
Мне сделано замечание, что синтаксис delete неверный, хотя все работает, вот и я обратился на форум
...
Рейтинг: 0 / 0
17.05.2017, 07:45
    #39454286
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
Ок.
Тогда объясни мне, незнающему DELETE в MYSQL
Что значит наличие пробела в "t2. id" и "t2. Gik"

Как таблица называется в базе.
...
Рейтинг: 0 / 0
17.05.2017, 07:47
    #39454287
dmr55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
пробел поставил случайно
...
Рейтинг: 0 / 0
17.05.2017, 07:48
    #39454289
dmr55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
таблица tab конешно
...
Рейтинг: 0 / 0
17.05.2017, 07:50
    #39454291
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
Тогда Х.З.
...
Рейтинг: 0 / 0
17.05.2017, 07:53
    #39454293
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
Код: sql
1.
2.
ALTER IGNORE TABLE `table`
ADD UNIQUE INDEX idx_Gik (Gik);
...
Рейтинг: 0 / 0
18.05.2017, 06:34
    #39455082
dmr55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
данный запрос у меня не работает
...
Рейтинг: 0 / 0
18.05.2017, 06:56
    #39455085
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
Так у тебя твой запрос работает.
У тебя есть претензия преподавателя по синтаксису.
...
Рейтинг: 0 / 0
18.05.2017, 07:07
    #39455087
dmr55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
также как ты говорил сделал удаление путем создания временной таблицы, но необходимо подкорректировать синтаксис моего первого удаления, хотя этот пример приводят многие в интернете и даже он встречается в некоторых справочных материалах
...
Рейтинг: 0 / 0
18.05.2017, 08:25
    #39455114
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
Я говорю о том, что задача сейчас не в создании запроса,
а в выяснении того, что великий ум твоего преподавателя нашел "неуместного" в данном запросе.
...
Рейтинг: 0 / 0
18.05.2017, 08:43
    #39455122
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
dmr55Мне сделано замечание, что синтаксис delete неверный
Синтаксис запроса
Код: sql
1.
2.
3.
4.
5.
DELETE t1 
FROM `tab` t1
   , `tab` t2 
WHERE t1.Gik =t2. Gik 
  AND t1.id > t2. id;


абсолютно верный и полностью соответствует официальной документации 13.2.2 DELETE Syntax :
Multiple-Table Syntax

Код: sql
1.
2.
3.
4.
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
    tbl_name[.*] [, tbl_name[.*]] ...
    FROM table_references
    [WHERE where_condition]



Замечание о неверном синтаксисе свидетельствует о малограмотности "замечателя" в данном вопросе. Было бы неплохо узнать его обоснование "неверности" синтаксиса - может, цитатка на Баш получится...
...
Рейтинг: 0 / 0
18.05.2017, 09:04
    #39455135
dmr55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление дублей по условию
Akina, спасибо, буду выяснять и приводить доказательства
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Удаление дублей по условию / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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