2014-09-08 4 views
0

У меня есть подзапрос следующим образом: какой будет выбрать идентификатор в соответствии с условиями первого и удалитьSubquery терпит неудачу в MySQL

записи,

Delete from post_master_user_map WHERE id IN 
(SELECT id FROM `post_master_user_map` WHERE posted_by_user_id=110); 

Но это дает мне следующую ошибку:

You can't specify target table 'post_master_user_map' for update in FROM clause 

Что в этом плохого? заранее спасибо .

UPDATE

Это также выходит из строя, я не почему

DELETE FROM `post_master_user_map` WHERE `reshare_id` in (SELECT id FROM `post_master_user_map` WHERE 
posted_by_user_id=110); 

ответ

1

Эта ошибка возникает при попытке изменить таблицу и выбрать из той же таблицы в запросе к югу.

Во всяком случае, чтобы решить эту ошибку изменить запрос следующим образом

Delete from post_master_user_map WHERE posted_by_user_id=110; 

Для обновленного запроса (в вашем вопросе) используют следующие

DELETE t1 FROM post_master_user_map as t1 INNER JOIN 
post_master_user_map as t2 ON t1.reshare_id=t2.id and t2.posted_by_user_id=110 
+0

DELETE FROM 'post_master_user_map' WHERE' reshare_id' in (SELECT id FROM 'post_master_user_map' WHERE posted_by_user_id = 110); также не работает – Crazyrubixfan

+0

«Эта ошибка возникает, когда вы пытаетесь изменить таблицу и выбрать из той же таблицы в подзапросе». В этом случае вы изменяете «post_master_ser_map», и вы выбираете из того же «post_master_ser_map» в подзапросе –

+0

. Мне нужно выбрать первый идентификатор из запроса: SELECT id FROM post_master_user_map WHERE posted_by_user_id = 110 И затем удалить с помощью запроса: УДАЛИТЬ ОТ post_master_user_map WHERE reshare_id в (идентификатор полученного результата); – Crazyrubixfan

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