Я ищу способ удаления дубликатов, основанных не только на одной таблице, но и на двух.Удалить дубликаты в MySQL db на основе двух подключенных таблиц
Таблица 1:
ID | NAME | ETC
1 | Truck |
2 | Boat |
3 | Truck |
4 | Truck |
Таблица 2
ID | REL_ID | KEY | VAL
450 | 1 | operator | Jim
451 | 2 | operator | Frank
452 | 3 | operator | Jake
453 | 4 | operator | Jim
Я хочу, чтобы искать дубликаты таким образом, что я только извлекать запись # 4 из таблицы 1; заголовки из Таблицы 1 нужно обманывать, но ТАКЖЕ их связанные ключи в Таблице 2 (например, rec 1 и rec 3 также являются обманами, но у них разные операторы). До сих пор я дважды пытался подключиться к таблице 2, но я все время путаюсь с тем, как это сделать. Спасибо!
EDIT: Желаемый результат: Я хотел бы выполнить запрос, который выбирает только строку 4 в таблице 1 для удаления, так как он является дубликатом как в своем названии (Truck и Truck), а также в его соответствующем операторе (Джим и Джим). Если бы я удалил всех обманов с именем Truck, я также удалю те, у которых есть разные операторы.
Пример запроса У меня было, что выбирает (для удаления) все обманутые из таблицы 1 будет:
SELECT a.ID, a.title
FROM table_1 AS a
INNER JOIN (
SELECT title, MIN(id) AS min_id
FROM table_1
GROUP BY title
HAVING COUNT(*) > 1
) AS b ON b.title = a.title
AND b.min_id <> a.id
Это заставляет меня обманывает из таблицы 1, но не знаете, как свернуть в таблице 2.
Это не ясно, что вы пытаетесь достичь здесь. Можете ли вы привести примерный запрос и пример желаемого вывода строки, который может помочь описать проблему, с которой вы столкнулись? – xathien
_I только получить запись # 4_ - почему бы не '2-Boat'? У этого нет дубликатов. Можете ли вы опубликовать таблицу, как будет выглядеть результат вашего запроса? –
по извлечению вы имеете в виду удалить? или сохранить? и вы хотите удалить из обеих таблиц? –