MYSQL将行数据透视到列

MYSQL将行数据透视到列,mysql,sql,workbench,Mysql,Sql,Workbench,我创建了下表 CREATE TABLE `demo` ( `id` int(11) DEFAULT NULL, `A1` varchar(56) DEFAULT NULL, `B1` varchar(56) DEFAULT NULL, `C1` varchar(56) DEFAULT NULL, `D1` varchar(56) DEFAULT NULL, `E1` varchar(56) DEFAULT NULL, `user_id` varchar(56) DEF

我创建了下表

CREATE TABLE `demo` (
  `id` int(11) DEFAULT NULL,
  `A1` varchar(56) DEFAULT NULL,
  `B1` varchar(56) DEFAULT NULL,
  `C1` varchar(56) DEFAULT NULL,
  `D1` varchar(56) DEFAULT NULL,
  `E1` varchar(56) DEFAULT NULL,
  `user_id` varchar(56) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我的插入查询

 INSERT INTO `demo` VALUES
(1,'a','b','c','d','d','10');
(2,'a','c','d','a','c','11');
(3,'a','d','d','a','c','12');
然后我的桌子结构就在这里了

为此,我尝试了以下方法

select `10`,`20`,`30` from
(
    (select A1,B1,C1,D1,E1 from demo where id =1) as `10`,
    (select A1,B1,C1,D1,E1 from demo where id =2) as `20`,
    (select A1,B1,C1,D1,E1 from demo where id =3) as `30`
)as s
我得到以下错误

    Error Code: 1064. You have an error in your SQL syntax; check the manual 
    that corresponds to your MySQL server version for the right syntax to use 
near 's' at line 6
请让我知道我做错了什么……或者其他更好的方法来获得您想要的输出:

select max(case when id = 1 then val end) as `10`,
       max(case when id = 2 then val end) as `20`,
       max(case when id = 3 then val end) as `30`      
from ((select id, a1 as val, 1 as which from demo) union all
      (select id, b1, 2 as which from demo) union all
      (select id, c1, 3 as which from demo) union all
      (select id, d1, 4 as which from demo) union all
      (select id, e1, 5 as which from demo)
     ) x
group by which;

请原谅我!这些是什么<代码>一,二,三,四,五我也不明白你的输出@我已经更新了我的问题。请看this@SubrataDeyPappu我想要我的数据作为数据透视。你能帮我发送你的预期结果吗?你的查询完全是错误的,只是为了理解他+1@Gordon Linoff你能解释一下你的疑问和背后的逻辑吗?为什么你在这里使用1,2,3,4,5。请告诉我你的逻辑this@user3172982 . . . 输出有五行,需要对它们进行聚合和排序。因此需要序列号。@GordonLinoff谢谢