SELECT作为另一个SELECT的别名

时间:2016-04-16 08:51:40

标签: mysql

我有一个关系中的两个表"一个到多个"。

所以在表tags中我有id,name等,在表SELECT id, name, (SELECT * FROM tags WHERE personid = id) AS tags FROM person 我有id,personid,tag

一个人可以使用不同的标签 N 条目。

我以为我可以做点什么

DI

我希望收到 NUMBER(id) STRING(名称) ARRAY(标记)的结果行。 我知道如何使用for循环执行此操作,使用2个单独的查询,但我认为MySQL应该最好这样做。

如果我做了一个JOIN,我最终得到了很多行,我想把所有标签分组到我得到的每一行的类似数组的条目中,即。每人一排。

这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以将GROUP_CONCAT与GROUP BY id

一起使用

http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat

这样的事情:

SELECT person.id, person.name, 
    GROUP_CONCAT(tags.name SEPARATOR ', ') FROM person 
    INNER JOIN tags ON tags.personid = person.id 
    GROUP BY person.id