2014-01-23 40 views
2

它們之間添加角色,我有如下兩個表:加入字符串和mysql的

代理

id | name 
1  | abc 
2  | def 

id | name | agent_id 
1 | aaa | 1 
2 | bbb | 1 

我想造成這樣的:

agent_name | store_name 
    abc  | aaa|bbb 

不:

agent_name | store_name 
    abc  | aaa 
    abc  | bbb 

哪個查詢可以幫助我做到這一點?我知道concat函數,但我不知道如何在字符串之間添加字符|

+0

請顯示您迄今爲止所嘗試的內容。任何SQL腳本? – ToBe

+0

我想下面的鏈接可能會幫助你:http://stackoverflow.com/questions/15154644/sql-group-by-to-combine-concat-a-column – Menno

回答

4

您可以使用GROUP_CONCAT(expr)

SELECT 
    a.name, 
    GROUP_CONCAT(s.name SEPARATOR '|') store_name 
FROM 
    agents a 
    JOIN stores s 
    ON (a.id = s.agent_id) 
GROUP BY a.id 

注意注意的是,結果被截斷其中有1024

+1

太棒了!我做到了:) –

0

的缺省值是由group_concat_max_len系統變量給出的最大長度,試試這個

SELECT a.name agent_name,CONCAT(a.name,'|',b.name)store_name 
FROM agents a 
INNER JOIN stores b ON a.id=b.id 

CONCAT函數用於連接兩個字符串s形成一個單一的字符串。 在代理表的這個「名稱」中,連接字符串「|」和「名稱」從商店表中使用連接來獲得所需結果

+0

你的查詢工作也太:) –

+0

給一些解釋也 – Backtrack