我查看了类似的主题并尝试了一些自我加入,但无法理解如何申请。
在Pervasive SQL 11中有这样的表:
kit|part
1 | 21
1 | 22
1 | 23
1 | 24
2 | 30
2 | 31
....
想要在一行中返回
1 | 21 | 22 | 23 | 24
2 | 30 | 31
相关部件的数量从1到30+不等,每件套件只能返回1行
实现这一目标的最佳方法是什么?
答案 0 :(得分:0)
不需要自我加入,只需要一个GROUP BY(假设MySQL)GROUP_CONCAT:
SELECT kit, GROUP_CONCAT(part)
FROM table
GROUP BY kit
您可以选择订购,或添加分隔符:
SELECT kit, GROUP_CONCAT(DISTINCT part ORDER BY part ASC SEPARATOR ' ')
FROM table
GROUP BY kit
但是,如果您希望将结果放在单独的列中,则无法在MySQL中编写动态自联接,这会自动加入足够的时间来拥有所有表,并且MySQL不支持枢轴。其他(R)DBMS可能会。