|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.08.2017, 14:06 | #1 |
Пользователь
Регистрация: 06.02.2017
Сообщений: 31
|
Сравнение двух таблиц MySQL и удаление повторяющихся значений
Помогите, пожалуйста!
Есть две таблицы Tabl.jpg Нужно сопоставить таблицы по столбцу code и cae и совпадающие строки удалить в tabl2. В итоге в tabl2 должны остаться только уникальные значения code: tabl2.jpg Последний раз редактировалось Tagir93; 17.08.2017 в 14:16. |
17.08.2017, 14:26 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
17.08.2017, 14:54 | #3 | |
Пользователь
Регистрация: 06.02.2017
Сообщений: 31
|
Цитата:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DELETE tabl2 FROM tabl2, tabl1 WHERE tabl1' at line 3 |
|
17.08.2017, 14:58 | #4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
во-первых, Вам написали три различных варианта. Вы все три проверили?
во-вторых, ваш пример не очень показателен. поясню. если в таблице Tabl2 будет запись 76 21 21 эту строчку нужно удалять? а если будет запись 76 10 21 эту строчку нужно удалять? |
17.08.2017, 15:00 | #5 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
Цитата:
программа — запись алгоритма на языке понятном транслятору
|
|
17.08.2017, 15:02 | #6 | |
Пользователь
Регистрация: 06.02.2017
Сообщений: 31
|
Цитата:
76 10 21 тоже нужно удалять, тут главное 76 |
|
17.08.2017, 15:02 | #7 | |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
Цитата:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
|
|
17.08.2017, 15:03 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
уже поздно.
ответ дал evg_m в пост #5 ещё вариант Код:
Код:
Последний раз редактировалось Serge_Bliznykov; 17.08.2017 в 15:09. |
23.08.2017, 14:47 | #9 |
Новичок
Джуниор
Регистрация: 05.06.2015
Сообщений: 2
|
Чем хуже?
Чем хуже?
ещё вариант Код: DELETE FROM tabl2 WHERE code In (SELECT cae FROM tabl1) впрочем, это вариант явно хуже, чем Код: DELETE FROM `tabl2` WHERE EXISTS (SELECT 0 FROM tabl1 WHERE tabl1.cae=tabl2.code) |
23.08.2017, 15:34 | #10 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
имхо, в общем случае - эффективностью.
в первом случае в подзапрос попадают ВСЕ коды из таблицы tabl1 потом из них делается выборка по code во втором случае из таблицы tabl1 выбираются только те записи, для которых есть совпадение по коду. конечно, это просто общее замечание. конкретно нужно смотреть план запроса в том и другом случае. А ещё всё будет сильно зависеть от наличия индекса (как минимум обязательно должен быть индекс в tabl1 по полю cae) и от того, много ли в tabl1 есть кодов cae для которых нет соответствующих кодов code в таблице tabl2. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление повторяющихся значений | 27102014 | Microsoft Office Excel | 3 | 07.05.2015 10:07 |
Сравнение столбцов двух таблиц и копирование значений из одной в другую. | cxx | Microsoft Office Excel | 2 | 10.02.2014 13:59 |
удаление из таблицы повторяющихся значений | CodeNOT | PHP | 2 | 28.03.2011 12:01 |
Сравнение значений в 2х столбцах и удаление лишних значений.. | Tyr | Microsoft Office Excel | 2 | 16.12.2010 18:19 |
Удаление повторяющихся значений в строке | aimk0 | Помощь студентам | 7 | 11.10.2010 16:58 |