Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SQL:将连接表的id聚合到一个字符串中

SQL:将连接表的id聚合到一个字符串中
EN

Stack Overflow用户
提问于 2012-03-16 15:05:27
回答 3查看 1.7K关注 0票数 3

我需要从SQL数据库导出数据(一些组使用SQL Server,一些Oracle等)转换为CSV,其中我需要字符串形式的连接表中的id。

例如,我有一个班级表和一个学生表。在Classes中,我需要ID、Name、Section、Time,而在Students中,我需要一个班级中学生ID的字符串。结果将返回以下列: id、name、section、time、student_ids。“student_ids”列应为分隔字符串,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'32,43,53,12,41'

行输出将以如下形式结束:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"1405,Computer Science,101,12-1:30,'32,43,53,12,41'"

每个班级的学生数量不一致,可能有一个学生,也可能有20个学生。我考虑过使用SQL Server使用while循环来获取此数据,或者使用聚合键的临时表,但我想知道是否有任何方法可以使用标准SQL来实现这一点,以便脚本可以移植。

注意:我知道输出格式并不理想,但唯一的其他选择是,我们必须为每个Class/Student组合提取不同的记录,然后必须分别聚合id。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-16 15:12:05

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

如果您使用的是MySQL,那么您应该看看GROUP_CONCAT聚合函数。

在Firebird中,有LIST聚合函数。

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

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

票数 2
EN

Stack Overflow用户

发布于 2012-03-16 15:15:47

如果是SQL Server,我倾向于这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT c.classID, c.other columns,
STUFF((SELECT ',' + convert(varchar,StudentID) 
    FROM StudentClass sc where c.ClassId = sc.ClassID
    FOR XML PATH('')),1,1,'') as StudentIdList
from ClassTable c

这里假设您有一个ID为ClassIdClassTable,以及一个同时包含StudentIdClassIdStudentClass链接表。

编辑:您必须具有包含学生和班级信息的某种类型的表,以便将两者链接在一起。或者是一个链接表,或者如果每个学生只允许一个类,那么ClassId可能存储在学生表中。无论哪种方式,上述方法都可以帮助你解决问题。

票数 1
EN

Stack Overflow用户

发布于 2012-03-16 15:13:54

您的问题的答案是:不,它不能用标准SQL完成。

这是因为您试图将多个值放入单个字段中,这违反了第一范式。

您可以使用非标准sql来完成此操作,但是每个数据库的sql都不同。

但是,您也可以使用SSRS中的表(它可以使用相同的标准SQL来访问Oracle和SQLServer中的表)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9739722

复制
相关文章
将tensor转换为图像_tensor转int
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/07
11.4K0
双精度,单精度和半精度
浮点数是计算机上最常用的数据类型之一,有些语言甚至数值只有浮点型(Perl,Lua同学别跑,说的就是你)。
用户1148523
2019/05/27
6K0
java map 转string_java-将Map <String,Object>转换为Map <String,String>
Map map = new HashMap(); //Object is containing String
全栈程序员站长
2022/08/25
12.3K0
Golang中Int32转换为int16丢失精度的具体过程
Int32转换为int16会丢失精度,这是总所周知的,但是具体如何丢失精度的,请看下面的代码:
全栈程序员站长
2022/09/21
2.4K0
Golang中Int32转换为int16丢失精度的具体过程
double转bigDecimal精度问题
double转bigDecimal精度问题 需要用到bigDecimal的字符串构造来转
全栈程序员站长
2022/09/05
2K0
double 转 BigDecimal 精度问题
很明显,经过 double 转 BigDecimal 后,我们最初的值已经发生变化,所以通常我们在做类型转换的时候推荐使用 BigDecimal.valueOf(…);
全栈程序员站长
2022/09/05
1.4K0
double转BigDecimal精度丢失[通俗易懂]
很多人在double或float转BigDecimal时习惯使用BigDecimal的构造方法new BigDecimal(33.33),此种写法会存在精度丢失问题,下面就具体实例带大家体会:
全栈程序员站长
2022/09/05
2.4K0
APP性能测评分析
1.1流畅度相关概念 刷新率 vs 帧率 刷新率:美妙屏幕刷新次数,手机品目的刷新率是60HZ 帧率:GPU在一秒内绘制的帧率
用户10443079
2023/03/21
1.7K0
APP性能测评分析
ChatGPT教你APP性能评测分析
请打开智造喵GPT地址:https://chat.plexpt.com/i/511440
用户10443079
2023/04/25
1.1K0
ChatGPT教你APP性能评测分析
【Qt源码笔记】简要说说 Qt5 中的 HighDPI 支持
想起之前在公司做的关于 HighDPI 的适配,在 Qt4 下可以说是比较繁琐,代码敲到手疼。早就听说 Qt5.6 开始支持了 HighDPI ,一直没机会看详细的代码。一直到开始做 Gal ,才刚好在 Qt5 下需要 HighDPI 支持。用过之后,真的感叹,用起来太方便了。故看了一下详细实现。不过比较遗憾的是代码中有一个小瑕疵。
Harper
2021/07/27
2.9K0
30.QT-渐变之QLinearGradient、 QConicalGradient、QRadialGradient
渐变有三种:QLinearGradient、QConicalGradient 、 QRadialGradient 它们都有一个QGradient父类 QGradient父类的常用公共函数有: void QGradient::setSpread ( Spread method ); //设置填充梯度区域外的区域,参数有: // QGradient::PadSpread :填充区域内最接近的停止颜色。这是默认的。 // QGradient::RepeatSpread : 在区域外继续重复填充 // QGrad
诺谦
2018/07/05
1.8K0
31.QPainter-rotate()函数分析-文字旋转不倾斜,图片旋转实现等待
30.QT-渐变之QLinearGradient、 QConicalGradient、QRadialGradient
诺谦
2018/07/30
2.6K0
31.QPainter-rotate()函数分析-文字旋转不倾斜,图片旋转实现等待
Qt官方示例-K线图
使用Qt的QCandlestickSeries类实现K线图绘制。 0x01 创建K线图 QCandlestickSeries *acmeSeries = new QCandlestickSeries
Qt君
2020/08/04
4.4K0
Qt官方示例-K线图
Qt官方示例-嵌套甜甜圈
  先创建一个QChartView实例并启用抗锯齿。然后从QChartView实例获得一个QChart对象。
Qt君
2020/05/08
1.5K0
Qt官方示例-嵌套甜甜圈
qml类型有那些?
以表格方式列出支持那些类型。 Qml类型与Qt类型对照表 Qml类型 Qt类型 bool bool int unsigned int, int double double real float, qreal string QString url QUrl color QColor font QFont date QDateTime point QPoint, QPointF size QSize, QSizeF rect QRect, QRectF matrix4x4 QMatrix4x4 quaterni
Qt君
2019/08/27
1.5K0
Qt官方示例-图表标注
  标注核心要点:QChart类提供了两种方法来映射场景坐标和系列域(由坐标轴范围定义)。
Qt君
2020/05/08
1.4K0
Qt官方示例-图表标注
Qt for android触摸手势事件QGestureEvent「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/197398.html原文链接:https://javaforall.cn
全栈程序员站长
2022/10/03
1.8K0
qt将毫秒级时间戳转换为日期(js把对象变成字符串)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128759.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/28
6.7K0
Qt官方示例-极坐标图
  轴的创建与笛卡尔图表相似,但是将轴添加到图表时,可以使用极坐标方向而不是对齐方式。
Qt君
2020/03/19
3.3K0
Qt官方示例-极坐标图
java将字符串转换为json对象的方法_java jsonobject转string
在与服务器交互的时候,我们往往会使用json字符串,今天的例子是java对象转化为字符串,
全栈程序员站长
2022/11/08
21.2K0

相似问题

无法将双精度转换为双精度

22

如何将双精度*转换为双精度?

60

将0.0转换为双精度有什么问题?

52

将C++双精度转换为DEC双精度

35

如何将sql datetime2转换为双精度?

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文