CREATE TABLE qanda
(`id` int, `qs` varchar(100), `ans` varchar(100));
INSERT INTO qanda
(`id`, `qs`, `ans`)
VALUES
(1, 'qs1', 'ans1'),
(1, 'qs2', 'ans2'),
(1, 'qs3', 'ans3'),
(1, 'qs4', 'ans4'),
(1, 'qs5', 'ans4'),
(2, 'qs1', 'ans1'),
(2, 'qs2', 'ans2'),
(2, 'qs3', 'ans3'),
(2, 'qs4', 'ans4');
SELECT GROUP_CONCAT('max(IF(qs=\'',qs,'\', ans, NULL)) AS `',`qs`,'`')
into @query
FROM qanda
where id = 1;
SET @query := concat('select id,',@query,' from qanda where id = 1 group by id');
PREPARE dynamic_statement FROM @query;
EXECUTE dynamic_statement;
DEALLOCATE PREPARE dynamic_statement;
id | qs1 | qs2 | qs3 | qs4 | qs5
-: | :--- | :--- | :--- | :--- | :---
1 | ans1 | ans2 | ans3 | ans4 | ans4
dbfiddle demo here