行与列的连接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;