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 ...* )