Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment fusionner plusieurs lignes dans MySQL ?

Vous devriez pouvoir appliquer une fonction d'agrégation à toutes les colonnes, puis GROUP BY id :

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

Voir SQL Fiddle avec démo

En ce qui concerne la structure de la base de données, le seul problème que je vois est que vous insérez plusieurs enregistrements pour le même utilisateur. Vous devriez utiliser une UPDATE pour utiliser les valeurs au lieu de les insérer.

Il semble que vous souhaitiez utiliser le REPLACE fonction dans MySQL (voici un tutoriel ).

La requête ressemblerait donc à ceci :

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

Voir SQL Fiddle avec démo