mysql查詢含逗號(hào)的數(shù)據(jù),將逗號(hào)拆分為多行展示:
武鳴網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),武鳴網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為武鳴上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的武鳴做網(wǎng)站的公司定做!
原始數(shù)據(jù)如下:
現(xiàn)在因?yàn)樾碌男枨螅枰獙⑦@些數(shù)據(jù)轉(zhuǎn)化為如下形式:
假設(shè)我們需要處理的表結(jié)構(gòu)為:
使用如下sql語(yǔ)句即可實(shí)現(xiàn)需求:
查詢的主要思路為,原表與一個(gè)包含連續(xù)自增長(zhǎng)字段的表進(jìn)行join,得到字符串分隔后的索引值,其中 length( a.name ) - length( REPLACE ( a.name, ',', '' ) ) + 1 語(yǔ)句獲得字符串逗號(hào)分隔之后得到的數(shù)據(jù)長(zhǎng)度,兩表關(guān)聯(lián)之后,會(huì)得到相應(yīng)行數(shù)的數(shù)據(jù)。比如,
在join之后會(huì)得到:
之后對(duì)查詢中的結(jié)果,使用substring_index方法進(jìn)行截取,然后得到我們自己想要的數(shù)據(jù)。
列轉(zhuǎn)行:利用max(case when then)
`max``---聚合函數(shù) 取最大值`
`(`case course when '語(yǔ)文' then score else 0 end ) ---判斷`
` as 語(yǔ)文``---別名作為列名`
我僅提供思路給你,至于其它單位,可以單獨(dú)摘錄出來(lái),union all
select?始發(fā)地??目的地???起步價(jià),sum(case?when?區(qū)間??0?and?區(qū)間?=?20?then?單位價(jià)格?else?''?end)?'0-20(公斤)'?,
sum(case?when?區(qū)間??20?and?區(qū)間?=?50?then?單位價(jià)格?else?''?end)?'20-50(公斤)'?,
sum(case?when?區(qū)間??50?and?區(qū)間?=?100?then?單位價(jià)格?else?''?end)?'50-100(公斤)'??from?(你的sql語(yǔ)句)?t?group?by?t.始發(fā)地?,t.目的地??,t.起步價(jià)
有,一張表弄出新的兩行,用case when then 拼出來(lái),兩張表外聯(lián)在加casewhen then
select typeId,value1 from 表
union
select typeId,value2 from 表
union
select typeId,value3 from 表
union
select typeId,value4 from 表
........
union
select typeId,value10 from 表
注意,以上共19行(10行select、9行union)是一個(gè)語(yǔ)句,中間沒(méi)有分號(hào),這個(gè)語(yǔ)句的結(jié)果就是你想要的結(jié)果。