參考鏈結
建表語句
create table tb_score(插入資料id int(11) not null auto_increment,
userid varchar(20) not null comment '使用者id',
subject varchar(20) comment '科目',
score double comment '成績',
primary key(id)
)engine = innodb default charset = utf8;
insert into tb_score(userid,subject,score) values ('001','語文',90);執行語句insert into tb_score(userid,subject,score) values ('001','數學',92);
insert into tb_score(userid,subject,score) values ('001','英語',80);
insert into tb_score(userid,subject,score) values ('002','語文',88);
insert into tb_score(userid,subject,score) values ('002','數學',90);
insert into tb_score(userid,subject,score) values ('002','英語',75.5);
insert into tb_score(userid,subject,score) values ('003','語文',70);
insert into tb_score(userid,subject,score) values ('003','數學',85);
insert into tb_score(userid,subject,score) values ('003','英語',90);
insert into tb_score(userid,subject,score) values ('003','政治',82);
set @sql = null;select
group_concat(distinct
concat(
"max(if(`subject` = '", `subject`, "',score,null)) as ", `subject`)
) into @sql
from tb_score; #可在此處新增篩選條件 例如subject不為語文的
set @sql = concat('select userid, ', @sql, '
from tb_score
group by userid');
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
Mysql 列轉行 例項
箱表 create table yoshop shang activity box id int 11 not null auto increment comment 編號 activity id int 11 not null comment 活動id number int 11 not null...
Mysql 採用列轉行
欄位的拆分 使用函式substring index str,delim,count str 拆分物件 delim 拆分標識 substring index 搜尋時執行區分大小寫的匹配 delim count 拆分方式 如果 count為正,則返回最終分隔符左側的所有內容 從左側開始計算 如果coun...
SQL 操作列轉行查詢
題目 如下一張學生成績表 tb score t name t course t score 小明 語文 90 小明 數學 87 小明 英語 85 小紅 語文 92 小紅 數學 89 小紅 英語 95 要求,寫出合理的sql語句,得到下面的結果 姓名 語文 數學 英語 小明 90 87 85 小紅 9...