De reden waarom dit niet werkt, is dat MySQL u niet toestaat te verwijzen naar de tabel die u aan het bijwerken bent (kan komen) binnen een subquery.
Dit kan echter worden verholpen door een query te gebruiken in plaats van de tabel zelf in de FROM, wat tot gevolg heeft dat de gevraagde tabelwaarden worden gekopieerd in plaats van te verwijzen naar degene die u bijwerkt.
Dus effectief dit, zelfs als het contra-intuïtief is, zal werken:
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