Mysql 如果a表在select中返回多行,如何组合数据?
假设我有一个sql数据库和如下查询: 正如你所看到的,我有一些用户有一些最喜欢的颜色。我想能够做的是运行一个查询,并选择所有的用户和他们最喜欢的颜色。。。然而,为了便于在我自己的代码中使用,我希望每行上不存在重复的数据 我希望最终结果是:Mysql 如果a表在select中返回多行,如何组合数据?,mysql,sql,Mysql,Sql,假设我有一个sql数据库和如下查询: 正如你所看到的,我有一些用户有一些最喜欢的颜色。我想能够做的是运行一个查询,并选择所有的用户和他们最喜欢的颜色。。。然而,为了便于在我自己的代码中使用,我希望每行上不存在重复的数据 我希望最终结果是: 1 | Email | admin@sqlfiddle.com | [Blue, Green] 2 | Twitter | @sqlfiddle | [Purple] 这样返回的是一个用户表,其中每一行都是一个用户,我可以得到
1 | Email | admin@sqlfiddle.com | [Blue, Green]
2 | Twitter | @sqlfiddle | [Purple]
这样返回的是一个用户表,其中每一行都是一个用户,我可以得到他们最喜欢的颜色
如果有不同的思考方式(不是合并,而是在一行上列出用户和他们喜欢的颜色),我也很乐意听到
谢谢 SQL FIDLE是MySQL,所以我假设它是数据库。在MySQL中,您可以使用
group\u concat()
将它们放在一起:
如果您确实希望它们采用带方括号的格式:
concat('[', group_concat(fc.color separator ', '), ']')
是SQL的把戏
其他数据库通常都有类似的功能。您可以使用它来完成您想要的功能
select
supportContacts.id,
supportContacts.type,
supportContacts.details,
GROUP_CONCAT(favoriteColors.color)
from supportContacts
left join favoriteColors on supportContacts.id = favoriteColors.support_id
group by supportContacts.id
你在使用什么数据库?SQL FIDLE是MySQL,所以我倾向于认为这是合适的数据库。哦,对不起,忘了添加它了。MySQL确实是数据库。
select
supportContacts.id,
supportContacts.type,
supportContacts.details,
GROUP_CONCAT(favoriteColors.color)
from supportContacts
left join favoriteColors on supportContacts.id = favoriteColors.support_id
group by supportContacts.id