比方說,我有一個包含用戶名和城市的表:我可以從MySQL DB中獲取多個字符串作爲單個「粘貼」字符串嗎?
- 約翰|紐約
- Aaron |紐約
- George |達拉斯
- 低|達拉斯
- John |達拉斯
- 年輕|達拉斯
而且我希望有一個數組,如下所示:
['New York'] => 'John, Aaron',
['Dallas'] => 'George, Low, John, Young'
所以我想我需要連接組操作員中的字符串。
有沒有解決方法?
比方說,我有一個包含用戶名和城市的表:我可以從MySQL DB中獲取多個字符串作爲單個「粘貼」字符串嗎?
而且我希望有一個數組,如下所示:
['New York'] => 'John, Aaron',
['Dallas'] => 'George, Low, John, Young'
所以我想我需要連接組操作員中的字符串。
有沒有解決方法?
您可以使用group_concat
select
city_name,
group_concat(user_names) as user_names
from table_name
group by city_name
MySQL的32年5月5日架構設置:
CREATE TABLE Table1
(`name` varchar(6), `city` varchar(8))
;
INSERT INTO Table1
(`name`, `city`)
VALUES
('John', 'New York'),
('Aaron', 'New York'),
('George', 'Dallas'),
('Low', 'Dallas'),
('John', 'Dallas'),
('Young', 'Dallas')
;
查詢1:
select
concat('[''',city,'''] => ''',group_concat(name),'''') as array
from table1
group by city
| ARRAY |
|---------------------------------------|
| ['Dallas'] => 'George,Low,John,Young' |
| ['New York'] => 'John,Aaron' |
對不起,我沒有那麼清楚:我不是說結果應該直接來自MySQL。 – 2014-12-01 19:25:13
但是,您在MySQL語法中「模擬」PHP數組外觀的努力令人印象深刻! – 2014-12-01 19:29:56
此功能使用'「」'作爲‘膠水’,所以如果我需要別的東西膠水 - 我會在深SHT不可開交。如果根本沒有默認膠水會更好,因爲我可以使用'group_concat(concat(user_name,'my glue'))''。有什麼我可以用「膠水」做的事情嗎? – 2014-12-01 19:20:54
閱讀該函數的手冊頁。你可以指定任何你想要的膠水字符。 – 2014-12-01 19:24:55
是的,你可以使用'group_concat(名字SEPARATOR'||')'..添加你想要的任何SEPARATOR。 – 2014-12-01 19:24:57