2016-03-03 76 views
-3

我已经创建下表MYSQL枢转行

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

我的表结构后,接着就是在这里 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 

请让我知道我做错了....或任何其他更好的方法来得到这个输出

+0

不好意思!这些是什么? '一,二,三,四,五' – 1000111

+0

我也不明白你的输出! – 1000111

+0

@SubrataDeyPappu @SubrataDeyPappu我已经更新了我的问题。请看看这个 – user3172982

回答

1

你似乎想:

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; 
+0

只是为了理解他+1! – Yossi

+0

@Gordon Linoff能否请你解释一下你的查询和逻辑 – user3172982

+0

为什么你在这里使用1,2,3,4,5。请让我知道你的逻辑 – user3172982