Вот моя проблема,MySQL DELETE запрос с JOIN ошибку ...
Я должен создать запрос в mysql
с присоединиться заявления ... мои таблицы базы данных выглядит следующим образом:
table 1:
contact, with contact_id, contact_value, contact_relation
table 2 :
relation, with relation_id, relation_one, relation_two
Я должен удалить из контакта, где контакт имеет отношение значение (отношение id) И все эти отношения, но ТОЛЬКО, где мое отношение_one равно предопределенному значению ...
так что фактическая идея у меня есть:
DELETE FROM 'relation' INNER JOIN contact ON contact.contact_relation = relation.relation_id WHERE relation_one = MyValue
Но это не делает то, что я имею в виду ...
Я стараюсь это так в моем mysql
:
DELETE relation.* FROM `relation` INNER JOIN `contact` ON `contact`.`contact_relation`=`relation`.`relation_id` WHERE `relation_one` = 48
Я предполагаю, что это может выглядеть как глупый вопрос ... даже «уже ответил один», НО я просмотрел стек, нашел похожий, но не решил мою проблему, потому что, когда я применяю этот запрос, он удаляет ВСЕ отношения WHERE relation_one = 48
, НЕ ТОЛЬКО те, которые мне нужны ... (я имею в виду те, которые ссылаются на контактную таблицу под контакт-зависимостью (которая является идентификатором отношений Я МОГУ удалить, если эти отношения имеют relation_one
, установленный только в 48!)
Я имею в виду: у меня может быть 100 записей в таблице отношений, где relation_one
IS 48 ... но я только хочу удалить эти «отношения», relation_id = contact_relation
... мой contact.contact_relation
в большинстве случаев null
... но иногда, для 2/100 это существующий relation_id
там написано ... эти отношения я «возможно, придется» удалить ...
это может помочь проиллюстрировать это [SQL Fiddle] (http://sqlfiddle.com) –
возможный дубликат [Удаление строки s с MySQL LEFT JOIN] (http://stackoverflow.com/questions/2763206/deleting-rows-with-mysql-left-join) –