如何避免mysql中的group_concat分隔符重复选择结果

时间:2016-01-29 03:58:58

标签: mysql group-by group-concat

我有2个表呼叫记录和用户,他们的字段在

之下

记录字段:

  
      
  • recordID(key)
  •   
  • userID(key)
  •   

用户字段:

  
      
  • userID(key)
  •   
  • 的userName
  •   
  • userNote
  •   

我希望通过recordID了解recordID,userName,userNote group 这是我的sql

 select record.recordID, group_concat(user.userName) as USERNAMES , group_concat(user.userNote) as USERNOTES from record 
 left outer join user on record.userID = user.USERID  
 group by record.recordID 

现在我可以将USERNAMES和USERNOTES与','分开。知道每个用户名及其用户注释

但如果有','在userNote中,它可能会出错

例如,BEN userNote很好,很高,TOM的用户注意很好

sql结果将是

  

USERNAMES-> BEN,TOM

     

USERNOTES->好的,妥尔,漂亮的

在这种情况下,USERNOTES将有3个音符,我不能与哪个是TOM' S note

有没有办法避免这种情况?

或者我能做的最好方法是使用难以出现的分隔符,例如'!@#@!'

在我的实际情况中,我有10个与一个键相关的表,所以如果我将所有表保留在外连接,那么它将是大量的重复行,

1 个答案:

答案 0 :(得分:2)

一种方法是不同的分隔符:

select r.recordID,
       group_concat(u.userName separator ';') as USERNAMES ,   
       group_concat(u.userNote separator ';') as USERNOTES
from record r left outer join
     user u
     on r.userID = u.USERID  
group by r.recordID ;