2011-04-21 6 views
1

J'ai table VIDEO avec cols (url, titre, desc, ...) et table FAVORITE avec cols (fav_url, thumb).supprimer joindre requête imbriquée

lorsque je tente de supprimer les lignes des deux tables à l'aide:

delete from video join favorite on video.url=favorite.fav_url 
    where url in (select url from video where title like '%thumb%') 

i get erreur.

est-il possible de faire ce travail en exécutant une requête?

Répondre

1

EDIT Essayez ceci

VOUS CANT EFFECTIVEMENT DO CE TYPE DE SUPPRIMER QUERY QUAND VOUS AVEZ UN SOUS QUERY comme vous. Lisez cet article qui explique plus en détail.

MySQL Error 1093 - Can't specify target table for update in FROM clause

DELETE video, favorite 
    FROM video 
    JOIN favorite 
     ON video.url = favorite.fav_url 
    JOIN (SELECT DISTINCT url 
        FROM video 
        WHERE title like '%thumb%') tt ON video.url = tt.url 
+0

# 1093 - Vous ne pouvez pas spécifier la table cible 'V' pour la mise à jour dans la clause FROM –

+0

QU'EST-CE QUE? Avez-vous utilisé le code exact ci-dessus? avez-vous eu quelque chose dans la fenêtre de requête en même temps? Je viens juste d'écrire une requête presque identique et je n'ai pas eu d'erreur du tout. –

+0

exactement le même .. –

2

Essayez:

DELETE t1, t2 FROM video t1 JOIN favorite t2 ON t1.url=t2.fav_url 
WHERE url IN 
    (SELECT url FROM (SELECT * FROM video) t3 WHERE title LIKE '%thumb%') 
+0

# 1093 - Vous ne pouvez pas spécifier la table cible 't1' pour la mise à jour dans la clause FROM –

+0

@ daniel.tosaba: merci, fixe. –