mysql函數之五:group_concat mysql 把結果集中的一列數據用指定分隔符轉換成一行


函數使用說明:該函數返回帶有來自一個組的連接的非NULL 值的字符串結果。其完整的語法如下

GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr }
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val ])

例子:

SELECT uin FROM sys_user where uin<240;

結果:

# uin
'1'
'2'
'3'
'44'
'176'
'196'
'204'
'210'
'215'
'237'
'238'

SELECT group_concat(uin,'') FROM sys_user where uin<240;

結果:

 

示例3:

SELECT uin FROM sys_user where uin=2 or create_user_uin_tree like '%_2_%';

找到管理員及下級管理員所創建的角色:

SELECT * FROM sys_role  where ( role_type=1 AND  ain in(select uin FROM sys_user where create_user_uin_tree like '%_2_%') ) OR role_id=1;

或者:

SELECT * FROM sys_role  where ( role_type=1 AND  ain in(select group_concat(uin) FROM sys_user where create_user_uin_tree like '%_2_%') ) OR role_id=1;

但查不出結果來,為什么呢?

因為 group_concat(uin) 得到的結果被當作一個元素,而不是用逗號分隔的一系列value,如何才能得到我想要的效果呢

網絡上有說用find_in_set()方法的,如下所示:

SELECT * FROM sys_role  where ( role_type=1 AND  find_in_set(ain,select group_concat(uin) FROM sys_user where create_user_uin_tree like '%_2_%') ) OR role_id=1;

但有語法錯誤,如圖所示,暫時無法解決

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM