先看看表長什麼樣子
select * from student;
±-----±-----±----------±------+
| name | cno | cource | score |
±-----±-----±----------±------+
| s1 | c1 | 資料結構 | 91 |
| s1 | c2 | 作業系統 | 81 |
| s1 | c3 | 微積分 | 71 |
| s2 | c1 | 資料結構 | 92 |
| s2 | c2 | 作業系統 | 82 |
| s2 | c3 | 微積分 | 72 |
| s3 | c1 | 資料結構 | 93 |
| s3 | c2 | 作業系統 | 83 |
| s3 | c3 | 微積分 | 73 |
±-----±-----±----------±------+
建表語句放到下面:
create table student(
name varchar(10),
cno varchar(2),
cource varchar(10),
score float(2)
)insert into student values(『s1』,『c1』,'資料結構 ',『91』) ;
insert into student values(『s1』,『c2』,『作業系統』,『81』) ;
insert into student values(『s1』,『c3』,『微積分』,『71』) ;
insert into student values(『s2』,『c1』,『資料結構』,『92』) ;
insert into student values(『s2』,『c2』,『作業系統』,『82』) ;
insert into student values(『s2』,『c3』,『微積分』,『72』) ;
insert into student values(『s3』,『c1』,『資料結構』,『93』) ;
insert into student values(『s3』,『c2』,『作業系統』,『83』) ;
insert into student values(『s3』,『c3』,『微積分』,『73』) ;
然後想要求下表的樣子:
±-----±---------±---------±-------+
| 姓名 | 資料結構 | 作業系統 | 微積分 |
±-----±---------±---------±-------+
| s1 | 91 | 81 | 71 |
| s2 | 92 | 82 | 72 |
| s3 | 93 | 83 | 73 |
±-----±---------±---------±-------+
轉置語句如下:
select s11.name 「姓名」, s11.score 「資料結構」,s12.score 「作業系統」, s13.score "微積分"from
(select name, score from student where cno = 『c1』) as s11,
(select name, score from student where cno = 『c2』) as s12,
(select name, score from student where cno = 『c3』)as s13
where s11.name = s12.name
and s12.name = s13.name
先看看原表長什麼樣子
select * from idtemp;
±-----±------±--------±--------±--------+
| id | token | column1 | column2 | column3 |
±-----±------±--------±--------±--------+
| 1 | aaa | 1234 | abcd | mnop |
| 2 | bbb | 5678 | efgh | qrst |
| 3 | ccc | 9101 | ijkl | uvwx |
±-----±------±--------±--------±--------+
表建立語句
create table idtemp (
id varchar(10),
token varchar(10),
column1 varchar(10),
column2 varchar(10),
column3 varchar(10)
)表賦值語句
insert into idtemp values(『1』,『aaa』,'1234 ',『abcd』,『mnop』) ;
insert into idtemp values(『2』,『bbb』,'5678 ',『efgh』,『qrst』) ;
insert into idtemp values(『3』,『ccc』,'9101 ',『ijkl』,『uvwx』) ;
想要展開成這個表
id token columns
1 aaa 1234
1 aaa abcd
1 aaa mnop
2 bbb 5678
2 bbb efgh
2 bbb qrst
3 ccc 9101
3 ccc ijkl
3 ccc uvwx
語句如下(會報錯,待修改):
solution using union:
select id
,token
,column1 as columns
from current_table
union
select id
,token
,column2 as columns
from current_table
union
select id
,token
,column3 as columns
from current_table
二維陣列轉置
輸入乙個n行m列的陣列,輸出他的轉置,具體來說 輸出的第i行第j個數字,應是輸入的第j行第i個數字。1 n 100 1 m 100 1 aij 1000 input 第一行兩個整數n,m表示陣列的行數和列數 接下來n行,每行m個整數表示陣列內容。output 第一行先輸出m,n。接下來輸出轉置的結果...
二維陣列的轉置
首先我們預設 表示轉置符號那麼行列轉置有 0 0 0 0 0 1 1 0 0 2 2 0 1 0 0 1 1 1 1 1 1 2 2 1 2 0 0 2 2 1 1 2 2 2 2 2 1.我們觀察到行列轉置在表面上是行列交換 2.但是我們發現,對角線是不用處理的所以有 0 0 0 0 1 1 1 ...
一維表轉二維表(mysql)
例子資料 drop table ifexists tmp0103.temp test create table tmp0103.temp test id int 11 not null auto increment,class varchar 255 default null,score doubl...