文章摘要
这篇文章主要介绍了如何使用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
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
© 版权声明
文章版权归作者所有,未经允许请勿转载。



