天天看點

MYSQL聚合函數GROUP_CONCAT的使用【DEDECMS】

1、

A表中字段:id userName age class sortrank

B表中字段:id userName title sortrank

2、A表中userName和B表中userName相關聯 

3、查詢某個年齡某個班級下有多少主題題材(title)是一樣的 

//GROUP_CONCAT(userName) as userName
//把使用者名稱這一列資料變成一行(字元串不帶引号)以逗号分割組成的字元串 比如:張三,李四,王五
$row = $db->GetOne("SELECT GROUP_CONCAT(userName) as userName FROM B WHERE `title` LIKE '%$title%'");
//把不帶引号的逗号分割字元串替換為帶引号的逗号分割字元串
$userName = str_replace(",","','",$row['userName']);
//A表中查詢在B表中查詢結果中出現的資料
$mysql= "select * from A  where  `userName ` in (' ".$userName ." ') "; 
           

需要注意:GROUP_CONCAT有個最大長度的限制,超過最大長度就會被截斷掉,預設隻傳回1024長度的字元串。

需要在mysql配置檔案中,加上group_concat_max_len = 1024000 #你要的最大長度。

繼續閱讀