Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como resolver o erro do MySQL Você não pode especificar a tabela de destino X para atualização na cláusula FROM?


A razão pela qual isso não funciona é que o MySQL não permite que você faça referência à tabela que você está atualizando (cancome) dentro de uma subconsulta.

No entanto, isso pode ser superado usando uma consulta em vez da própria tabela no FROM, que tem o efeito de copiar os valores da tabela solicitada em vez de fazer referência à que você está atualizando.

Então, efetivamente, isso, mesmo que contra intuitivo, funcionará:
DELETE FROM cancome WHERE user_id IN
 ( SELECT user_id FROM (SELECT * FROM cancome) AS cancomesub
 GROUP BY user_id HAVING COUNT(user_id)>3 )
 limit 3