sqlserver 2005及以上版本

表(tb)

id    value

1     aa

2     cc

3     bb

3     dd

4     aa

4     cc

4     dd

5     aa

优化前:

select id, value = (select value+',' from tb as rtb where rtb.id = a.tb.id for xml path(''))

from tb as a

group by a.id

优化后:(思路:将count(0)数等于1或者等于2的记录,通过min,max处理,减少每个id都要查询表)

select id, value =case count(0) when 1 then min(value)

when 2 then min(value)+','+max(value)

else   (select value+',' from tb as rtb where rtb.id = a.tb.id for xml path('')) end

from tb as a

group by a.id

group by 如何合并字符串优化记?的更多相关文章

  1. 【SQL】SqlServer中Group By后,字符串合并

    参考: 1.SQL查询语句 group by后, 字符串合并 2.sql for xml path用法 #需求: 合并列值 表结构,数据如下: id value ----- ------ aa bb ...

  2. 在论坛中出现的比较难的sql问题:26(动态行专列+合并字符串、补足行数)

    原文:在论坛中出现的比较难的sql问题:26(动态行专列+合并字符串.补足行数) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所 ...

  3. 《Python CookBook2》 第一章 文本 - 去字符串两端的空格 && 合并字符串 && 将字符串逐字符或者逐词反转

    去字符串两端的空格 任务: 获得一个开头和末尾都没有多余空格的字符串. 解决方案: 字符串对象的lstrip.rstrip和strip 方法正是为这种任务而设计的.这几个方法都不需要参数,它们会直接返 ...

  4. js 正则学习小记之匹配字符串优化篇

    原文:js 正则学习小记之匹配字符串优化篇 昨天在<js 正则学习小记之匹配字符串>谈到 个字符,除了第一个 个,只有 个转义( 个字符),所以 次,只有 次成功.这 次匹配失败,需要回溯 ...

  5. python文本 拼接或合并字符串

    python文本 拼接.合并字符串 场景: 拼接.合并字符串 在这个场景中,我们首先想到的当然是使用+或者+=将两个字符串连接起来 >>> a='a'    >>> ...

  6. 一次 group by + order by 性能优化分析

    一次 group by + order by 性能优化分析 最近通过一个日志表做排行的时候发现特别卡,最后问题得到了解决,梳理一些索引和MySQL执行过程的经验,但是最后还是有5个谜题没解开,希望大家 ...

  7. Java-Runoob-高级教程-实例-字符串:12. Java 实例 - 字符串优化

    ylbtech-Java-Runoob-高级教程-实例-字符串:12. Java 实例 - 字符串优化 1.返回顶部 1. Java 实例 - 字符串优化  Java 实例 以下实例演示了通过 Str ...

  8. 【LeetCode】5685. 交替合并字符串 Merge Strings Alternately (Python)

    作者: 负雪明烛 id: fuxuemingzhu 公众号:每日算法题 本文关键词:LeetCode,力扣,算法,算法题,交替合并字符串,Merge Strings Alternately,刷题群 目 ...

  9. SQL查询语句 group by后, 字符串合并

    合并列值 --******************************************************************************************* 表 ...

随机推荐

  1. codeforces 459 C. Pashmak and Buses(思维)

    题目链接:http://codeforces.com/problemset/problem/459/C 题意:有n个人,k辆车,d天要求没有两个人在d天都坐在一起.输出坐的方法. 题解:这题很有意思, ...

  2. 树莓派4B安装64位Linux(不用显示器键盘鼠标)

    入手了树莓派4B,我对它的定位是作为一个Docker实验环境,平时用到的镜像多为Java服务端常用的技术.以及自己作的Java应用镜像,因此宿主机需要64位操作系统,而树莓派官方操作系统只有32位的, ...

  3. 现代 JavaScript 教程到底是什么?

    手册与规范 <现代 JavaScript 教程>是开源的现代 JavaScript 从入门到进阶的优质教程,它旨在帮助你逐渐掌握 JavaScript 这门语言.但是一旦你已经熟悉了这门语 ...

  4. Linux之acl库的安装与使用(限制Linux某用户的访问权限)

    acl库 作用:限制Linux某用户的访问权限 acl库的安装 首先github中下载acl代码: git clone https://github.com/acl-dev/acl 进入acl, 执行 ...

  5. Python---变量和简单的数据类型

    我会站在一个c/c++的基础上去看python的学习,尽量会在文中比较两者的区别,有什么说的不对的地方,欢迎指出,大家共同学习(o_o).(此后的文章都会基于python3以上版本去写) 1.变量 变 ...

  6. 阿里云机器维护-gitlab Forbidden

    gitlab这台机子运行了一两年了,今天突然拉代码不能拉了,看了下接口403 登录网页 Forbidden 看了下是前两天挖矿病毒引发的,大致因为大量请求导致ip被封了 我们只要把这台机子加入配置白名 ...

  7. Go操作NSQ

    NSQ是目前比较流行的一个分布式的消息队列,本文主要介绍了NSQ及Go语言如何操作NSQ. NSQ NSQ介绍 NSQ是Go语言编写的一个开源的实时分布式内存消息队列,其性能十分优异. NSQ的优势有 ...

  8. Linux root 用户下 selenium 运行chrome --no-sandbox的问题的解决

    #coding = utf-8 from selenium import webdriver chrome_options = webdriver.ChromeOptions() chrome_opt ...

  9. 进击的 Java ,云原生时代的蜕变

    作者| 易立 阿里云资深技术专家 导读:云原生时代的来临,与Java 开发者到底有什么联系?有人说,云原生压根不是为了 Java 存在的.然而,本文的作者却认为云原生时代,Java 依然可以胜任&qu ...

  10. 新手学习FFmpeg - 调用API调整视频局部速率

    通过修改setpts代码实现调整视频部分的播放速率. 完整代码可参考: https://andy-zhangtao.github.io/ffmpeg-examples/ 在前面提到了PTS/DTS/T ...