我有两个表,我需要从
中选择数据用户
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
来自group_concat我试过这个
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
如何在逗号
之间的每个值之间放置一个分隔符像
email1 set1=value1,set1=value1 etc
答案 0 :(得分:2)
使用GROUP_CONCAT()
和GROUP BY
。
答案 1 :(得分:2)
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;
答案 2 :(得分:1)
试试这个小提琴:
http://sqlfiddle.com/#!2/782e3/6
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