J'essaie de faire une requête comme celle-ci :
DELETE FROM term_hierarchy AS th
WHERE th.parent = 1015 AND th.tid IN (
SELECT DISTINCT(th1.tid)
FROM term_hierarchy AS th1
INNER JOIN term_hierarchy AS th2 ON (th1.tid = th2.tid AND th2.parent != 1015)
WHERE th1.parent = 1015
);
Comme vous pouvez probablement le constater, je veux supprimer la relation parentale avec 1015 si le même tid a d'autres parents. Cependant, cela me donne une erreur de syntaxe :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS th
WHERE th.parent = 1015 AND th.tid IN (
SELECT DISTINCT(th1.tid)
FROM ter' at line 1
J'ai vérifié la documentation, et j'ai exécuté la sous-requête par elle-même, et tout semble se vérifier. Quelqu'un peut-il comprendre ce qui ne va pas ?
Mise à jour : Comme répondu ci-dessous, MySQL ne permet pas que la table dont vous supprimez les données soit utilisée dans une sous-requête pour la condition.
3 votes
Attention : Bonne réponse au fond stackoverflow.com/a/4471359/956397 ajoutez simplement l'alias de la table après
DELETE t FROM table t ...