我有一个关系中的两个表"一个到多个"。
所以在表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,我最终得到了很多行,我想把所有标签分组到我得到的每一行的类似数组的条目中,即。每人一排。
这可能吗?
答案 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