一維表轉二維表(mysql)

2021-08-11 05:49:11 字數 1677 閱讀 5486

例子資料

drop

table

ifexists tmp0103.temp_test;

create

table tmp0103.temp_test (

`id`

int(11) not

null auto_increment,

`class`

varchar(255) default

null,

`score`

double

default

null,

`userid`

int(11) default

null,

primary

key (`id`)

) engine=innodb auto_increment=8

default charset=latin1;

/*建立表結構*/

insert

into tmp0103.temp_test values ('1', 'math', '90', '1');

insert

into tmp0103.temp_test values ('2', 'english', '90', '1');

insert

into tmp0103.temp_test values ('3', 'computer', '80', '1');

insert

into tmp0103.temp_test values ('4', 'sports', '90', '1');

insert

into tmp0103.temp_test values ('5', 'math', '80', '2');

insert

into tmp0103.temp_test values ('6', 'english', '85', '2');

insert

into tmp0103.temp_test values ('7', 'computer', '100', '2');

通過定義變數儲存臨時結果

/*以下如果在mysql客戶端,需要一條一條執行*/

set @ee='';

/*定義變數ee為空*/

select @ee:=concat(@ee,'sum(if(class=\'',class,'\'',',score,0)) as ',class,',')

from (select

distinct class from tmp0103.temp_test) a;

/*\'為在引號裡面的\是對'的轉義*/

set @qq=concat('select tmp0103.temp_test.userid as columna,',left(@ee,length(@ee)-1),'

from tmp0103.temp_test group by userid');

/*left(@ee,length(@ee)-1),去掉ee中最後一句的最後乙個,*/

prepare stmt2 from @qq; /*預處理需要執行的動態sql,其中stmt是乙個變數*/

execute stmt2; /*執行sql語句*/

deallocate prepare stmt; /*釋放掉預處理段*/

二維表n m轉一維表n 1

在工作中遇到這樣乙個問題 我要存貯玩家以及他們所關注的boss到公共表,現在公共錶行數受限,一般會保持在1024行以下,而現在的情況是乙個服承載800人,boss數量在40個左右,乙個人關注的boss無上限,那麼極限情況下要存下這些資料需要800 40 32000行,很明顯這樣儲存無法達到要求。我想...

mysql二維轉一維 二維陣列轉為一維陣列

1.很多時候會遇到二維陣列,轉為一維陣列的時候會很苦惱,尤其是剛剛接觸php的phper。如下 將 arr轉化為一維陣列 arr array array uuid aaaaa array uuid bbbbb array uuid ccccc array uuid sssss array uuid ...

一維表轉換成二維表

晚上回到宿舍,舍友問起我今天他們筆試的乙個題目 如何把乙個一維表轉換成二維表 sql查詢該如何寫呢?一維表table a如下 年級 課目 人數 2001 語文 20 2001 數學 15 2002 語文 20 2002 數學 15 2003 語文 20 2003 數學 15 如何轉換成如下格式的二維...