我正在使用Sybase ASE数据库.
我有两个表看起来像:
我有两个表看起来像:
餐馆:
--------------------- | ShopName | ShopID | --------------------- | Sweetie | 1 | | Candie | 2 | | Sugarie | 3 | ---------------------
餐桌糖果:
---------------------- | SweetName | ShopID | ---------------------- | lolly | 1 | | redlolly | 1 | | greenloly | 1 | | taffy | 2 | | redtaffy | 2 | | bluetaffy | 2 | | choco | 3 | | mintchoco | 3 | | milkchoco | 3 | | gummybees | 3 | ----------------------
----------------------------------------------------- | ShopName | Sweets | ----------------------------------------------------- | Sweetie | lolly,redlolly,greenlolly | | Candie | taffy,redtaffy,bluetaffy | | Sugarie | choco,mintchoco,milkchoco,gummybees | -----------------------------------------------------
我应该怎么做呢?我需要这个用于Sybase ASE数据库.我尝试了LIST()函数,但是我收到了一个错误.我检查了它的文档,结果证明,ASE版本中没有此功能.
这可能意味着会涉及一些“动态sql”(我很少知道这意味着什么).有人可以帮忙吗?
我可以在结果表中找到ShopId而不是ShopName ……我还不确定.我想这不会有太大区别.此外,结果的Sweets列中的尾随逗号不是问题.我想要的只是一个非空白分隔符.
解决方法
您必须指定您正在使用的DBMS.
MysqL的GROUP CONCAT正是您所需要的.
SELECT ShopName,GROUP_CONCAT(SweetName SEPARATOR ",") FROM Shops a JOIN Sweets b ON a.ShopID = b.ShopID GROUP BY ShopName