MYSQL 将行旋转到列

MYSQL Pivoting rows to column

我创建了以下 table

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');

然后我的table结构就在这里 My table data

i want output that

为此我尝试了以下

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;