2016-01-29 44 views
2

複製我有2代表通話記錄和用戶,他們的田地都低於如何避免GROUP_CONCAT分離器在mysql中選擇搜索結果

記錄字段:

  • 的recordId(鍵)
  • userID(key)

用戶領域:

  • 用戶ID(鍵)
  • 的userName
  • userNote

,我想知道的recordId,用戶名,userNote組recordId所 這裏是我的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 

現在我可以拆分用戶名和USERNOTES用「」要知道每一次用戶名和他的usernote

但如果有一個「」在userNote,這可能犯錯誤

例如,BEN userNote是漂亮,身材TOM的userNote是好的

SQL結果將是

USERNAMES-> BEN,TOM

USERNOTES->漂亮,高挑,漂亮的

在這種情況下USERNOTES將有3個音符,我不能不同於哪一個是TOM注

有什麼辦法避免這種情況?

或者我能做的最好的方法是使用一個分隔符,是很難出現,像「!@#@!」

在我的現實情況下,我有相關的關鍵10桌,所以如果我左外連接所有表,這將是噸重複行的,

+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 ;