"concatenate on join"的 SQL 查询

标签 sql join concatenation sap-ase

我正在使用 Sybase ASE 数据库。
我有两个看起来像的表:

Shops :

---------------------
| ShopName | ShopID |
---------------------
| Sweetie  | 1      |
| Candie   | 2      |
| Sugarie  | 3      |
---------------------

Sweets :
----------------------
| 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

关于 "concatenate on join"的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3737798/

相关文章:

c - 线程终止问题(C 编程)

join - LINQ to Entities 连接实例而不是 id 会生成令人讨厌的 SQL

c++ - 连接 LPCTSTR 字符串

Ruby 连接字符串并添加空格

sql - MYSQL - 连接两个表

sql server 2008 Management Studio 不检查我的查询的语法

mysql - 从源数据库插入目标数据库,不同的服务器

sql - ON运算符SQL,它是什么?

sql - VBA Excel - 通过 ADO 的 SQL 查询返回无限的空记录集

MySql子查询2个表