我的表格数据为
id | qs | ans
=============
1 | qs1|ans1
1 | qs2|ans2
我需要从此表中获取数据
id | qs1 | qs2
1 | ans1| ans2
注意我不知道有多少行将使用相同的ID,我不知道qs单元格中的数据所以我不能用例我的数据是文本,而不是数字
答案 0 :(得分:1)
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