多行到一行查询

时间:2011-07-21 18:48:04

标签: mysql join row left-join

在我执行此查询时在我的数据库中:

SELECT *
FROM users u
LEFT JOIN usersToStrategy uts on uts.userID = u.userID
LEFT JOIN strategy s on uts.stratID  = s.stratID  

我得到以下结果:

 userID    username  fName   utsID  userID   stratID  stratID   stratName
   1       nlubin     Neal    66      1        4       4         s3
   1       nlubin     Neal    65      1        3       3         s5
   1       nlubin     Neal    64      1        2       2         s2
   1       nlubin     Neal    63      1        1       1         s1

如何构建我的查询而不是获取这四行(仅针对一个用户)我为该用户获得了一行,并且该行中的一个单元格中包含所有用户的策略,如下所示:

 userID    username  fName      stratNames
   1       nlubin     Neal    s3, s5, s2, s1

我可以在合理范围内为您提供尽可能多的信息来帮助解决问题。

3 个答案:

答案 0 :(得分:2)

您使用GROUP_CONCAT

答案 1 :(得分:2)

我认为您正在寻找GROUP_CONCAT

SELECT userID, username, fName, GROUP_CONCAT(stratNames SEPARATOR ', ') AS strats
FROM users u
LEFT JOIN usersToStrategy uts on uts.userID = u.userID
LEFT JOIN strategy s on uts.stratID  = s.stratID  
GROUP BY userID, username, fName

答案 2 :(得分:0)

像这样使用GROUP_CONCAT

SELECT userID,
username,
fName,   
GROUP_CONCAT(stratNames)
FROM users u
LEFT JOIN usersToStrategy uts on uts.userID = u.userID 
LEFT JOIN strategy s on uts.stratID  = s.stratID   
GROUP BY username;