有這樣一張表: 表名: 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