Estou tentando fazer uma consulta como esta:
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
);
Como você provavelmente pode dizer, quero excluir a relação dos pais com 1015 se o mesmo tid tiver outros pais. No entanto, isso me resulta em um erro de sintaxe:
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
Eu verifiquei a documentação e executei a subconsulta por si só, e parece que tudo deu certo. Alguém consegue descobrir o que está errado aqui?
Atualização : conforme respondido abaixo, o MySQL não permite que a tabela da qual você está excluindo seja usada em uma subconsulta para a condição.
DELETE t FROM table t ...