Du bør være i stand til at anvende en aggregeret funktion på alle kolonnerne og derefter GROUP BY id
:
select id,
max(name) name,
max(age) age,
max(grade) grade
from yourtable
group by id
Hvad angår DB-strukturen, er det eneste problem, jeg ser, at du indsætter flere poster for den samme bruger. Du bør bruge en UPDATE
sætning for at bruge værdierne i stedet for at indsætte.
Det lyder som om du vil bruge REPLACE
funktion i MySQL (her er en tutorial
).
Så forespørgslen ville ligne denne:
REPLACE
INTO yourtable (`id`, `name`, `age`, `grade`)
VALUES (0, 'john', 11, null);