Трябва да можете да приложите агрегатна функция към всички колони и след това GROUP BY id
:
select id,
max(name) name,
max(age) age,
max(grade) grade
from yourtable
group by id
Вижте SQL Fiddle с демонстрация
Що се отнася до структурата на DB, единственият проблем, който виждам, е, че вмъквате множество записи за един и същ потребител. Трябва да използвате UPDATE
оператор за използване на стойностите вместо вмъкване.
Изглежда, че искате да използвате REPLACE
функция в MySQL (ето урок
).
Така че заявката ще бъде подобна на тази:
REPLACE
INTO yourtable (`id`, `name`, `age`, `grade`)
VALUES (0, 'john', 11, null);
Вижте SQL Fiddle с демонстрация