數據準備 [source_table]
id | data_title | group_title | sex |
24144 | 毅立 | 木火 | 男 |
24145 | 毅亮 | 木火 | 男 |
24146 | 毅南 | 木火 | 男 |
24147 | 毅泰 | 木火 | 男 |
24148 | 毅天 | 木火 | 男 |
24149 | 毅廷 | 木火 | 男 |
24150 | 毅曦 | 木火 | 男 |
24151 | 毅璽 | 木火 | 男 |
24152 | 毅烜 | 木火 | 男 |
24153 | 毅曜 | 木火 | 男 |
24154 | 毅耀 | 木火 | 男 |
24155 | 毅昱 | 木火 | 男 |
24156 | 毅章 | 木火 | 男 |
24157 | 毅兆 | 木火 | 男 |
24158 | 毅臻 | 木火 | 男 |
24159 | 毅中 | 木火 | 男 |
24160 | 毅重 | 木火 | 男 |
24161 | 毅左 | 木火 | 男 |
24162 | 昂才 | 木金 | 男 |
24163 | 昂成 | 木金 | 男 |
24164 | 昂川 | 木金 | 男 |
24165 | 昂賜 | 木金 | 男 |
24166 | 昂存 | 木金 | 男 |
24167 | 昂度 | 木金 | 男 |
24168 | 昂庚 | 木金 | 男 |
24169 | 昂劍 | 木金 | 男 |
24170 | 昂仁 | 木金 | 男 |
24171 | 昂儒 | 木金 | 男 |
24172 | 昂少 | 木金 | 男 |
24173 | 昂世 | 木金 | 男 |
第一步、排序設置編號
-- 將所有編號增加到現有總數的之上
UPDATE source_table,(SELECT COUNT(*) as cnt FROM source_table) as a SET id =id + a.cnt +1;
-- 更具排序重新賦予新的編號
UPDATE source_table, (
SELECT tmpTableA.* FROM (
SELECT
(@i:=@i+1) as `index`,
source_table.*
FROM source_table, (SELECT @i:=0) as i
ORDER BY sex,`group_title`,`data_title` ASC
)AS tmpTableA
) AS tmpTableB
SET source_table.id = tmpTableB.`index`
WHERE source_table.id = tmpTableB.id;
第二步、將數據生成多列csv格式數據
-- id MOD 36 將同組數據分成36行
SELECT
CONCAT(RowName, ',', RowData) AS csvdata
FROM (
SELECT
id MOD 36 AS RowIndex,
`group_title` AS RowName,
GROUP_CONCAT(DISTINCT `data_title` ORDER BY `data_title` DESC SEPARATOR ',') AS RowData
FROM source_table
WHERE sex = '男'
GROUP BY RowIndex,RowName
ORDER BY RowName
) as tmpTable;