加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

“查询连接时”的SQL查询

发布时间:2020-12-12 08:54:33 所属栏目:MsSql教程 来源:网络整理
导读:我正在使用Sybase ASE数据库. 我有两个表看起来像: 餐馆: ---------------------| ShopName | ShopID |---------------------| Sweetie | 1 || Candie | 2 || Sugarie | 3 |--------------------- 餐桌糖果: ----------------------| SweetName | ShopID |
我正在使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读