Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL与其他记录的字符串连接表_Mysql - Fatal编程技术网

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

MySQL与其他记录的字符串连接表,mysql,Mysql,您能否帮助我使“首选项”表中的所有记录在p.data返回结果中成为字符串 我只能想到CONCAT,但我的内部连接只选择了一条记录 示例查询 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

您能否帮助我使“
首选项
”表中的所有记录在
p.data
返回结果中成为
字符串

我只能想到
CONCAT
,但我的内部连接只选择了一条记录

示例查询

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
MySQL正好执行此功能:

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
子句以返回所有用户的行。如果要返回
首选项
表中没有相关行的用户,请将其切换到
左联接。

内部联接无关紧要,只联接一个字段。 您必须添加分组方式

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

谢谢,只要是小组讨论就行了!