Du bör kunna tillämpa en aggregatfunktion på alla kolumner och sedan GROUP BY id
:
select id,
max(name) name,
max(age) age,
max(grade) grade
from yourtable
group by id
När det gäller DB-strukturen är det enda problemet jag ser att du infogar flera poster för samma användare. Du bör använda en UPDATE
för att använda värdena istället för att infoga.
Det låter som att du vill använda REPLACE
funktion i MySQL (här är en handledning
).
Så frågan skulle likna denna:
REPLACE
INTO yourtable (`id`, `name`, `age`, `grade`)
VALUES (0, 'john', 11, null);