行与列的连接mysql

行与列的连接mysql,mysql,Mysql,我有两个表需要从中选择数据 用户 id email ---------- 1 email1 2 email2 设置 usrid name value -------------------- 1 set1 value1 1 set2 value2 2 set1 value1 2 set2 value2 我使用的sql是 SELECT u.email, s . * FROM `sers` u INNER JOIN `s

我有两个表需要从中选择数据

用户

id   email
----------
1   email1
2   email2
设置

usrid name    value
--------------------
1    set1     value1
1    set2     value2
2    set1     value1
2    set2     value2
我使用的sql是

SELECT u.email, s . * 
FROM `sers` u
INNER JOIN `settings` s ON u.id = s.usrid
LIMIT 0 , 30
但我明白了

email  name value
------------------
email1  set1  value1
email1  set1  value1
email2  set2  value2
email2  set2  value1
有什么办法可以到达吗

email1  set1 value1 set1 value1 etc
email2  set2 value2 set2 value2 etc
我试过这个

SELECT u.email, GROUP_CONCAT(s.name,s.value) as vals FROM `users` u INNER JOIN `settings` s ON u.id = s.usrid GROUP BY u.email

email1  set1value1,set1value1 etc
如何在逗号之间的每个值之间放置分隔符

使用
GROUP_CONCAT()
GROUP BY

试试这把小提琴:


它们最多只能有2个设置吗?如果两列相同,则“联接”可以工作。@491243否,每个用户大约有7个
email1  set1=value1,set1=value1 etc
SELECT u.email, CONCAT_WS(',', GROUP_CONCAT( s.name),
                 GROUP_CONCAT( s.value)) AS allValues
FROM `user` u
INNER JOIN `settings` s ON u.id = s.usrid GROUP BY email
LIMIT 0 , 30
SELECT u.email,
GROUP_CONCAT(s.name,'='  ,s.value SEPARATOR ',')
FROM `user` u
INNER JOIN `settings` s ON u.id = s.usrid
GROUP BY u.email;