il group by serve a raggruppare e non a scegliere un valore che non hai nel raggruppamento (id_movimento) .... e poi il raggruppamento prende il primo record che trova fisicamente nella tabella che soddisfa la richiesta. la query va vista diversamente.
Prova ad esempio:
codice:
SELECT id_movimento, ip, mac, id_rete
FROM movimenti
WHERE id_movimento IN(SELECT MAX(id_movimento)
FROM movimenti
group by id_rete, ip)
order by id_rete, ip
eventualmente cambia l'order by o il group by secondo il tuo bisogno.