Mysql
 sql >> Database >  >> RDS >> Mysql

Come unire più righe in MySQL?

Dovresti essere in grado di applicare una funzione di aggregazione a tutte le colonne e quindi GROUP BY id :

select id,
  max(name) name,
  max(age) age,
  max(grade) grade
from yourtable
group by id

Vedi SQL Fiddle con demo

Per quanto riguarda la struttura del DB, l'unico problema che vedo è che stai inserendo più record per lo stesso utente. Dovresti usare un UPDATE istruzione per utilizzare i valori invece di inserirli.

Sembra che tu voglia usare REPLACE funzione in MySQL (ecco un tutorial ).

Quindi la query sarebbe simile a questa:

REPLACE 
  INTO yourtable (`id`, `name`, `age`, `grade`) 
  VALUES (0, 'john', 11, null);

Vedi SQL Fiddle con demo