gpt4 book ai didi

SQL:将连接表的 id 聚合成一个字符串

转载 作者:行者123 更新时间:2023-12-04 23:52:07 25 4
gpt4 key购买 nike

我需要将数据从 SQL 数据库(一些组使用 SQL Server,一些 Oracle 等)导出到 CSV 中,我需要字符串中连接表的 ID。

例如,我有一张类(class)表和一张学生表。在类(class)中,我需要 ID、姓名、部门、​​时间,而在学生中,我需要一串类(class)学生的 ID。结果将返回列:id、name、section、time、student_ids。 'student_ids' 列应该是分隔字符串,例如:

'32,43,53,12,41'

行输出最终会是这样的:

"1405,Computer Science,101,12-1:30,'32,43,53,12,41'"

每个类(class)的学生人数不一致,可能是一个学生,也可能是 20 个学生。我考虑过使用 SQL Server 使用 while 循环来获取此数据,或者使用聚合键的临时表,但我想知道是否有任何方法可以使用标准 SQL 来完成此操作,以便脚本可以移植。

注意:我知道输出格式不理想,但唯一的其他选择是我们必须为每个类(class)/学生组合提取不同的记录,然后必须单独聚合 ID。

最佳答案

不同的 RDBMS 有不同的方式来执行这种查询。

如果你正在使用 MySQL,你应该看看 GROUP_CONCAT聚合函数。

在 Firebird 中,您有 LIST聚合函数。

如果您使用的是 SQL Server,在 下的 SO 中有一些已回答的问题.通常的方法是使用 FOR XML PATH 结构。一个很好的例子是:SQL Query to get aggregated result in comma seperators along with group by column in SQL Server

在 Oracle 中有几种方法可以做到这一点,有一篇很好的文章 here .

关于SQL:将连接表的 id 聚合成一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9739722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com