我查看了类似的主题并尝试了一些自我加入,但不明白如何申请。
在 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 行
实现这一目标的最佳方法是什么?
不需要自加入,只需一个带有(假设 MySQL)GROUP_CONCAT的 GROUP BY :
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 可能会。