我有两张桌子。第一个是具有列的项表:

itemId|itemNumber|description
1      abc        xxxx
2      def        xxxx
3      hij        xxxx

然后我有一个子项表,其中有列:
parentItemId|childItemId
1            2
2            3
1            3
3            2
3            1

我试图选择一个项目编号列表,子项目编号列表连接在第3列中,如下所示:
结果:
ItemNumber|description|childItemNumber1, childItemNumber2, childItemNumber3...
abc        xxxx        def,hij
def        xxxx        hij
hij        xxxx        def,abc

因此,在连接它们之前,我需要在第一个表中查找父子关系的项目号。
我试过这样的方法:
SELECT c.itemNumber, c.description,  GROUPBY_CONCAT(SELECT a.itemNumber from Item as a inner join SubItem as b on a.itemId = b.childItemId where a.Itemid = b.parentItemId) FROM Item as c WHERE 1

但我甚至不认为

最佳答案

这需要两个连接和一个聚合:

select p.itemNumber, p.description,
       GROUP_CONCAT(ci.description) as children
from Item p left join
     SubItem s
     on p.itemId = s.parentItemId left join
     Item ci
     ON s.childItemId = ci.ItemId
group by p.ItemId;

不需要子查询。

关于mysql - 通过ID将Concat子项放入列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33055280/

10-10 03:59