2013-10-15 3 views
1

У меня есть буксирные столыSQL Inner присоединиться удалить

tests_sub, tests_sub_sub

и tests_sub.id = tests_sub_sub.id

поэтому я хочу, чтобы удалить данные из обеих таблиц с одним

SQL запрос

я использовал следующее внутреннее соединение

DELETE tests_sub, tests_sub_sub FROM tests_sub 
INNER JOIN tests_sub_sub ON tests_sub_sub.id = tests_sub.id 
WHERE tests_sub.id = 10 

запрос работает нормально, только если обе таблицы имеют записи для tests_sub.id ... (если tests_sub_sub не имеет вход для test_sub.id = 10 ... хотя таблица tests_sub имеет записи для этого идентификатора, никакие строки не затронуты ... , пожалуйста, предложите несколько советов ....

+0

Пожалуйста, обратитесь к этой ссылке, чтобы удалить с помощью присоединиться http://stackoverflow.com/questions/652770/delete-with-join-in-mysql – Deepak

+0

использовать левое соединение Я думаю, что решить проблему –

+0

Inner join производит только набор записей, которые соответствуют как в таблице A, так и в таблице B. Попробуйте использовать «Left Outer Join» – heretolearn

ответ

1

LEFT JOIN.

DELETE tests_sub, tests_sub_sub 
FROM tests_sub 
     LEFT JOIN tests_sub_sub 
      ON tests_sub_sub.id = tests_sub.id 
WHERE tests_sub.id = 10 
+0

спасибо брату .... но как это сделать, если есть 3 таблицы ??? ........ .............. DELETE tests, tests_sub FROM tests LEFT JOIN tests_sub ON tests_sub.idtests = tests.idtests LEFT JOIN tests_sub_sub ON tests_sub_sub.idtests_sub = tests_sub.idtests_sub WHERE tests.idtests = 10 – sx3

+0

t он же, добавьте 'DELETE a, b, c FROM a LEFT JOIN b ON .... LEFT JOIN c on .... WHERE ....' - если вы хотите удалить в 3 таблицах. –

+0

О, брось, я понял .. он отлично работает .. спасибо. – sx3

Смежные вопросы