Sie sollten in der Lage sein, eine Aggregatfunktion auf alle Spalten anzuwenden und dann GROUP BY id
:
select id,
max(name) name,
max(age) age,
max(grade) grade
from yourtable
group by id
Siehe SQL Fiddle mit Demo
Was die DB-Struktur betrifft, sehe ich das einzige Problem darin, dass Sie mehrere Datensätze für denselben Benutzer einfügen. Sie sollten ein UPDATE
verwenden Anweisung, um die Werte zu verwenden, anstatt sie einzufügen.
Es hört sich so an, als ob Sie den REPLACE
Funktion in MySQL (hier ist ein Tutorial
). ).
Die Abfrage würde also etwa so aussehen:
REPLACE
INTO yourtable (`id`, `name`, `age`, `grade`)
VALUES (0, 'john', 11, null);
Siehe SQL-Fiddle mit Demo