简化 SQL Server 数据操作:将子查询行组合成单个分隔字段
复杂的数据操作任务通常涉及编写繁琐的代码,例如基于游标的解决方案。 一个常见的挑战是将多个子查询行组合成带有分隔符的单个字段。 本文提出了冗长游标实现的有效替代方案。
考虑两个表,“车辆”和“位置”,其目标是将与每辆车关联的城市名称合并到单个“位置”列中,以逗号分隔。 传统的光标方法需要大量编码。
SQL Server 2005 及更高版本:
更优雅的解决方案使用 FOR XML PATH
命令。这会从“Locations”表生成 XML,用逗号分隔城市名称,然后使用 STUFF
函数将 XML 转换回文本字符串:
SELECT [VehicleID], [Name], (STUFF((SELECT ',' + [City] FROM [Location] WHERE (VehicleID = Vehicle.VehicleID) FOR XML PATH('')), 1, 1, '')) AS Locations FROM [Vehicle]
SQL Server 2017 及更高版本:
为了提高性能和简单性,SQL Server 2017 及更高版本提供了 STRING_AGG
函数。该函数直接将值聚合到单个字符串中,接受分隔符作为第二个参数:
SELECT [VehicleID], [Name], (SELECT STRING_AGG([City], ', ') FROM [Location] WHERE VehicleID = V.VehicleID) AS Locations FROM [Vehicle] V
这两种方法都有效地将多个子查询行组合到单个分隔字段中,与基于游标的方法相比提供了显着改进,从而产生更清晰、更高效的代码并缩短了开发时间。 选择适合您的 SQL Server 版本的方法。
以上是如何在 SQL Server 中有效地将多个子查询行组合成单个分隔字段?的详细内容。更多信息请关注PHP中文网其他相关文章!

本文介绍了MySQL的“无法打开共享库”错误。 该问题源于MySQL无法找到必要的共享库(.SO/.DLL文件)。解决方案涉及通过系统软件包M验证库安装

本文探讨了Docker中的优化MySQL内存使用量。 它讨论了监视技术(Docker统计,性能架构,外部工具)和配置策略。 其中包括Docker内存限制,交换和cgroups

本文讨论了使用MySQL的Alter Table语句修改表,包括添加/删除列,重命名表/列以及更改列数据类型。

本文比较使用/不使用PhpMyAdmin的Podman容器直接在Linux上安装MySQL。 它详细介绍了每种方法的安装步骤,强调了Podman在孤立,可移植性和可重复性方面的优势,还

本文提供了SQLite的全面概述,SQLite是一个独立的,无服务器的关系数据库。 它详细介绍了SQLite的优势(简单,可移植性,易用性)和缺点(并发限制,可伸缩性挑战)。 c

本指南展示了使用自制在MacOS上安装和管理多个MySQL版本。 它强调使用自制装置隔离安装,以防止冲突。 本文详细详细介绍了安装,起始/停止服务和最佳PRA

文章讨论了为MySQL配置SSL/TLS加密,包括证书生成和验证。主要问题是使用自签名证书的安全含义。[角色计数:159]

文章讨论了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比较了它们对初学者和高级用户的功能和适合性。[159个字符]


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

禅工作室 13.0.1
功能强大的PHP集成开发环境

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)