2015-04-30 1 views
0

Я искал много онлайн, и я не могу понять, как сделать свою простую задачу.Удаление строк из нескольких таблиц с левым соединением

Я хочу удалить все строки, которые они выбирают с помощью следующего запроса.

`SELECT * FROM `session` s 
LEFT JOIN `pages` p ON (s.Id = p.VisitorSessionId) 
LEFT JOIN `product_views`ps ON (s.Id = ps.VisitorSessionId) 
WHERE s.`JSEnabled` = 0 

И я пытался удалить эти строки с помощью

DELETE FROM `session` s 
LEFT JOIN `pages` p ON (s.Id = p.VisitorSessionId) 
LEFT JOIN `product_views`ps ON (s.Id = ps.VisitorSessionId) 
WHERE s.`JSEnabled` = 0 

Я пытался сделать что-то похожее на это сообщение ответ Deleting rows with MySQL LEFT JOIN но не работает.

Как я могу сделать этот запрос без необходимости выполнять цикл в моем приложении?

ответ

2

Если вам необходимо удалить только из одной таблицы, то это может быть сделано, как

DELETE s FROM `session` s 
LEFT JOIN `pages` p ON (s.Id = p.VisitorSessionId) 
LEFT JOIN `product_views`ps ON (s.Id = ps.VisitorSessionId) 
WHERE s.`JSEnabled` = 0 

Для удаления из нескольких таблиц с присоединиться к было бы, как

DELETE s,p,ps FROM `session` s 
LEFT JOIN `pages` p ON (s.Id = p.VisitorSessionId) 
LEFT JOIN `product_views`ps ON (s.Id = ps.VisitorSessionId) 
WHERE s.`JSEnabled` = 0 
+0

Нет Да, мне нужно удалить все строки таблиц, которые соответствуют строке таблицы сеанса, выбраны –

+0

О, вау, .. Тогда у меня было это, Но вместо этого я использовал имена таблиц. Хорошо спасибо за быстрый ответ! Я должен ждать, чтобы отметить этот ответ как принятый lol .. –

+0

ВНЕШНЯЯ ВСТУПЛЕНИЕ в предложение DELETE - это редкое событие. Может быть, есть причина! – Strawberry

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