Query SQL distinte e di gruppo

Ho una query MySQL un po 'complessa per me e non riesco a capire come scriverlo senza mangiare tonnellate di memory. (non mi import se lo farebbe)

Ho la seguente tabella:

TABLE: users(id,ip) ------------------------------------ 4BF1510 | 40.145.10.99 <-- SAME IP (A) SAME ID --> 510SD55 | 65.12.105.42 SAME ID --> 510SD55 | 45.184.15.10 201505V | 40.145.10.99 <-- SAME IP (A) 984AZ6C | 72.98.45.76 | 10.15.78.10 <-- SAME IP (B) | 10.15.78.10 <-- SAME IP (B) SAME ID --> B1D56SX | SAME ID --> B1D56SX | 

Voglio una query che recuperi solo 1 elemento per un ID univoco o ip, quindi:

 4BF1510 | 40.145.10.99 510SD55 | 65.12.105.42 984AZ6C | 72.98.45.76 | 10.15.78.10 B1D56SX | 

Le cose più importnti:

  • Se più voci hanno lo stesso IP e lo stesso ID -> saranno raggruppate
  • Se più voci hanno lo stesso IP ma ID diversi -> non saranno raggruppate
  • Se più voci hanno lo stesso ID ma IP diversi -> saranno raggruppate
  • Se più voci hanno lo stesso IP ma campi ID vuoti -> saranno raggruppati
  • Se più voci hanno lo stesso ID ma campi IP vuoti -> saranno raggruppati

Il che significa che l'ID dovrebbe avere la prima priorità di attendibilità, poiché più utenti potrebbero utilizzare lo stesso IP.

Qualunque modo efficace per riuscirci?

Un sacco di grazie.

Quello che vuoi fare può essere realizzato usando group_contact .

Esempio

SELECT id, GROUP_CONCAT (ip) as ips FROM registra il gruppo per id

modifica: dimentica il gruppo di