anch'io non sono assolutamete mysql-aro

pero se il tuo id è un campo chiave ( come suggerisce il nome ) allora
la sottoquery "(SELECT MAX(id) FROM table WHERE y=1)"
restituisce solamente 1 record

e comunque anche se id NON fosse chiave restituirebbe solamente 1 valore

quindi puoi sostituire la IN con un =
codice:
UPDATE table SET x = 1 WHERE id = (SELECT MAX(id) FROM table WHERE y=1)
prova .....