El error consiste en que la subconsulta
debe forzosamente devolver un sólo campo y estás devolviendo tres.
Si lo que deseas es comparar un id de una tabla contra los id existentes en otra, y actualizar la primera tabla, lo que debes es usar el JOIN en el UPDATE:
Código sql:
Ver originalUPDATE historic_carrecs h
INNER JOIN carrecs c ON h.idCarrec=c.codi
SET finalitzat = 'si'
WHERE h.finalitzat = 'no' AND h.data_fi <= NOW();