我有两张桌子。第一个是具有列的项表:
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/