У меня таблица имеет данные как
id | qs | ans
=============
1 | qs1|ans1
1 | qs2|ans2
Мне нужно получить данные из этой таблицы, как
id | qs1 | qs2
1 | ans1| ans2
note Я не знаю, сколько строк будет с одним и тем же идентификатором, и я не знаю данных в ячейке qs, поэтому я не могу использовать случай, когда мои данные являются текстом, а не числом
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