MySQL连接表与其他记录的字符串

时间:2012-07-30 18:47:19

标签: mysql

您能否帮助我使“preference”表中的所有记录成为string返回结果中的p.data

我只能想到CONCAT,但我的内部联接只选择1条记录。

示例查询

SELECT 
    u.userid, 
    p.data

FROM user u

INNER JOIN preference p ON (
  p.userid = u.userid
)

WHERE u.userid = 1

所需输出

userid  |  data
--------------
1       | 1,2,3,4,5
2       | 1,2,3,4
3       | 1,2,3

2 个答案:

答案 0 :(得分:3)

MySQL的GROUP_CONCAT()执行此功能:

SELECT
  u.userid,
  GROUP_CONCAT(p.data) AS data
FROM
  user u
  INNER JOIN preference p ON u.userid = p.userid
WHERE u.userid = 1
GROUP BY u.userid

由于您的WHERE子句,您只能返回一行。删除WHERE子句以返回所有用户的行。如果要返回LEFT JOIN表中没有相关行的用户,请将其切换为preference

答案 1 :(得分:2)

与您的内部联接无关,只能加入一个字段。 您必须按

添加分组
SELECT 
    u.userid, 
    GroupConcat(p.data) as Data

FROM user u

INNER JOIN preference p ON (
  p.userid = u.userid
)
--WHERE u.userid = 1 With this you not gonna get the desired output.
group by u.userId