MySQL數據庫將多條記錄的單個字段合併成一條記錄

原SQL

SELECT acc.id,acc.acc_username,acc.acc_showname,T_PM_ROLE.role_name FROM  T_ACCOUNT acc,T_ACCOUNT_R_ROLE accRole ,T_PM_ROLE  WHERE acc.is_active =1 AND (accRole.is_active =1 AND  acc.id = accRole.acc_id) AND accRole.role_id = T_PM_ROLE.id
ORDER BY acc.id  

結果,有一個人有兩個角色,如果想要將兩個角色合併該如何呢?

答案:使用 group_concat函數

注:group_concat只有與group by語句同時使用才能產生效果

SELECT acc.id,acc.acc_username,acc.acc_showname,GROUP_CONCAT(T_PM_ROLE.role_name) FROM T_ACCOUNT acc,T_ACCOUNT_R_ROLE accRole ,T_PM_ROLE WHERE acc.is_active =1 AND (accRole.is_active =1 AND acc.id = accRole.acc_id) AND accRole.role_id = T_PM_ROLE.id GROUP BY acc_id ORDER BY acc.id 

 

注意 :  在使用group_concat的時候應該給對應的列做一個重命名:

select id, group_concat(nickname) nicknames, roleName, des from xx_table group by id, roleName, des

然後在mybatis中用 nicknames接收即可

 

 

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