sqlserver 合并列数据的实现(sql合并数据表)硬核推荐

随心笔谈10个月前更新 admin
233 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章主要介绍了如何使用MySQL的WITH子查询来合并查询结果,并对结果中的`eps_code`和`eps_name`字段进行处理。文章详细解释了以下内容: 1. **WITH子查询**:文章通过WITH子查询定义了一个中间结果集`eps_root`,该结果集包含了从`pm_eps`表和自身连接生成的行,并满足特定条件(如`enablestate=2`和特定`pk_eps`值)。 2. **合并查询结果**:文章描述了如何将子查询的结果与外连接生成的结果合并,确保最终结果集包含所有符合条件的记录。 3. **字段处理**:文章还详细说明了如何通过`SELECT`语句对处理后的`eps_code`和`eps_name`字段进行格式化处理,使用`STUFF`函数去除空格并确保字符串的正确性。 4. **排序和格式化**:文章提到,在处理`eps_code`和`eps_name`时,使用排序以避免中文字符的乱序问题,确保输出的整洁性和一致性。 这篇文章的核心内容是通过复杂的查询结构和字段处理,实现对数据库结果的高效管理和展示。

with eps_root(pk_eps, pk_parent, eps_code, eps_name) as
(
SELECT
pk_eps, pk_parent, eps_code, eps_name
FROM pm_eps
where enablestate=2
and pk_eps=’1001A11000000003P62E’
union all
SELECT
e.pk_eps, e.pk_parent, e.eps_code, e.eps_name
FROM pm_eps e
inner join eps_root r on e.pk_eps=r.pk_parent
where e.enablestate=2
)

select distinct
eps_code=stuff((select ‘/’ + convert(nvarchar(500), eps_code) from (select distinct eps_code from eps_root) r1 for xml path(”)), 1, 1, ”),
–此次需要使用eps_code排序,不然中文的会错乱顺序
eps_name=stuff((select ‘/’ + eps_name from (select top 99.99 PERCENT eps_name from eps_root order by eps_code) r2 for xml path(”)), 1, 1, ”)
from eps_root

© 版权声明

相关文章