数据准备 [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;