Mysql错误:子查询返回超过1行(但我希望它返回-我希望在每行上选择一个向量)

Mysql错误:子查询返回超过1行(但我希望它返回-我希望在每行上选择一个向量),mysql,sql,Mysql,Sql,为了简单起见,假设我有表users和interest 使用者 兴趣 我想要得到的是类似于 name | interests ---------------- amy | apples brian | carole| catfish, cobwebs, cryogenics 其中,兴趣可以是由所有相关值与某个分隔符串联而成的字符串,也可以是离散值的向量。我感兴趣的是将其转储到一个文件中,而不是将其放入一个表中或对其执行任何类型的SQL操作。做 SELECT name, (SELECT i

为了简单起见,假设我有表
users
interest

使用者 兴趣 我想要得到的是类似于

name  | interests
----------------
amy   | apples
brian | 
carole| catfish, cobwebs, cryogenics
其中,兴趣可以是由所有相关值与某个分隔符串联而成的字符串,也可以是离散值的向量。我感兴趣的是将其转储到一个文件中,而不是将其放入一个表中或对其执行任何类型的SQL操作。做

SELECT name, (SELECT interest from interests where uid=id) as interests from users;
给了我我在标题中提到的错误。这在SQL范式中是不可能的吗?我知道我可以将这些表的联接转储到一个文件中,然后使用python脚本或其他方法聚合所需的值,但这感觉很不雅观。

试试这个

 SELECT name , group_concat(interest) as interests from interests 
 LEFT JOIN users on users.id = interests.uid 
 GROUP BY name

更新:

如果您想让空格执行此操作
group_concat(兴趣分隔符',')

请尝试加入,这可能会起作用

由于select和from语句的顺序,可能会出现错误,或者名称后是否需要逗号。比如:

SELECT name, ( *then your select statement here ...* )

+1 . . . 但是您应该包括
separate','
,因为OP在示例中有空格。这正是我想要的。谢谢欢迎!:)正如@GordonLinoff所说,如果你想在兴趣之间使用空格,请使用
分隔符',“
我会更新它。问题是这会给我每行一个兴趣。我希望在一行上显示与给定名称对应的所有兴趣。(你对逗号的看法是正确的-已修复)。
 SELECT name , group_concat(interest) as interests from interests 
 LEFT JOIN users on users.id = interests.uid 
 GROUP BY name
SELECT u.name, i.interest
FROM users AS u, interests AS i
WHERE u.uid = i.id
SELECT name, ( *then your select statement here ...* )