Anledningen till att detta inte fungerar är att MySQL inte tillåter dig att referera till tabellen som du uppdaterar (kan komma) i en underfråga.
Detta kan dock övervinnas genom att använda en fråga istället för själva tabellen i FROM, vilket har effekten att kopiera de begärda tabellvärdena istället för att referera till den som du uppdaterar.
Så effektivt kommer detta, även om det är kontraintuitivt, att fungera :
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