字段中 字符串有條件連接 並分組顯示,排序 用sql語句

有這樣一張表: 表名: a

有三個字段 id(主鍵,自增) , user 用戶名, kc 課程

 

id  user          kc    

1  zhangsan  yuwen
2  lisi              kexue
3  zhangsan  shuxue
4  jj                yingyu
5  jj                diannao
6  ee              meishu

.........

要求: 把user所選的多門kc用“,”連接起來,在一條記錄裏顯示user的所有逗號連接的kc,且user無重複顯示。

顯示結果:

id  user          kcs
1  zhangsan  yuwen,shuxue
2  lisi              kexue
4  jj                yingyu,diannao
6  ee              meishu

 

解題要點:user無重複顯示就是以user分組就可以了。 關於字符串連接需用CONCAT函數,

CONCAT 連接遇到空值時 結果會是NULL,要解決這樣的問題就得用CONCAT(A,ifnull(b,'')),這樣就能得到A字段

(這裏的A b 字段與本程序無關,只是舉個例子)。

另外 CONCAT(aa.kc,ifnull(CONCAT(',',bb.kc),''))  居然也能用,這樣就避免了CONCAT(aa.kc,ifnull(bb.kc,'')) 顯示的時候多個逗號的問題了。

用這樣的sql語句可實現:select aa.id,aa.user,CONCAT(aa.kc,ifnull(CONCAT(',',bb.kc),'')) as kcs from a as aa left join a as bb on aa.id<>bb.id and aa.user=bb.user group by aa.user order by aa.id asc

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章