拼接查询结果中的字符串

CONCAT

  • 将多个结果作为字符串拼接在一起
    concat(str1,str2,...)
    

实例:

select concat(o.user_name,o.user_number) from user o where user_id = '1'

但是如果查询过程中有一个字符串为 null 则整个结果都将是 null ,这时可以将 null 转换为 ''

select concat(IFNULL(o.user_name,''),o.user_number) from user o where user_id = '1'

如果想将结果分隔,则可以使用下面的方法

select concat(o.user_name,',',o.user_number) from user o where user_id = '1'

但是这种方式显得过于难用,如果字段多了,要写很多将分隔符,这时可以用 concat_ws 进行拼接。

CONCAT_WS

  • 将多个结果拼接在一起,使用指定的分隔符
    concat_ws(separator,str1,str2,...)
    

实例:

select concat_ws(';',o.user_name,o.user_number) from user o where user_id = '1'

这种情况下,结果中有 null 的话,也不会返回 null ,但是如果将分隔符指定为 null 则结果会全变成 null

GROUP_CONCAT

  • 将多行的字符串分组整合成一个字符串,必须配合 group 使用
    group_concat([distinct] str1 [order by asc/desc] [separator])
    

distinct 可以排除重复值 order by 可以按升序 ( asc ) 或者降序 ( desc ) 进行排序 separator 是分隔符,默认为 ','

实例:

select
    o.class_id,
    group_concat(o.student_name)
from
    student o
group by
    o.class_id

上面这个 sql 是将学生按班级进行分组,然后将学生的姓名拼装到一起

更复杂一些的例子,可以将学生的名字、学生的学科和分数进行分组查询并拼接结果

select
    o.name,
    group_concat(concat_ws('-', o.subject,o.score) order by o.id asc) 
from
    student o
group by o.name;

UNION

UNION 操作符用于连接两个以上的 SELECT 语句的结果到一个结果集合中。多个 SELECT 语句会删除重复的数据。

语法格式:

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

参数:

  • expression1,expression2,...expression_n: 要查询的列名
  • tables: 要查询的表名
  • WHERE conditions: 可选,查询条件
  • DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 会删除重复数据,所以对结果无影响
  • ALL: 可选,返回所有结果集,包含重复数据
Author
Tags
总结(3) Emacs(2) org mode(4) 年度清单(2) 读书清单(2) 电影清单(2) 电视清单(2) Python(3) 学习计划(1) 子弹笔记(1) 手帐体系(1) 时间管理(1) 时间使用效率(1) 形意拳(1) 知识管理(1) 简历(1) 技能水平(1) 生活(1) 减法生活(1) 阅读(1) 阅读分组(1) org(1) docx(1) markdown(2) cmder(1) 图床(1) jsdelivr(1) github(1) 安卓系统(1) 手动更新手机系统(1) post link(1) post path(1) hexo(2) hugo(2) GitHub Pages(1) travis(1) 自动部署博客(1) presentation(1) gcc(1) g++(1) 默认表格(1) 复杂表格(1) multimd table(1) google adsense(1) evil(1) surround(1) librime(2) emacs-rime(1) liberime(1) dot(1) graphviz(1) use-sub-superscripts(1) ditaa(1) Evil Multiple cursors(1) turn evil mode off(1) modifier keys(1) keymap(1) super(1) hyper(1) install Emacs(1) Mac OS(1) keybinds(1) clocktable(1) coding system(1) image library(1) keybind(1) spacemacs(1) org babel(1) homebrew(1) dd(1) diskutil(1) tmux(1) xcode(1) xcrun(1) node-gyp(1) tar(1) tree(1) pacman(1) plantuml(1) find(1) grep(2) du(1) apt-get(1) apt(1) regex(1) wildcard(1) zsh(1) gdb(1) lsof(1) netstat(1) rebase(2) workflow(1) 工作流(1) .gitignore(1) postbuffer(1) hung up(1) merge(1) cache(1) reset(1) Git(1) command(1) submodule(1) GitHub Pull Request(1) pr(1) Matplotlib(1) beautifusoup(1) 下载小说(1) SOLID(1) Leetcode(2) 透视表(1) read_excel()(1) pandas(1) conda(1) django(1) markdown-deux(1) mysql(1) oracle(1) 模糊查询(1) logging level(1) reflex(1) Field(1) Maven(1) Selenium(1) 下拉框(1) select into(1) insert into select(1) CAST(1) CONVERT(1) timestamp(1) concat(1) concat_ws(1) group_concat(1) union(1) grant privileges(1) 重置 root 密码(1) 报错 10060(1) 清理连接数(1) create user(1) set password(1) exists(1) in(1) markdown-it(1) emoji(1) tasks(1) valine(1) Code 504(1) Hugo(1) theme(1) substring(1) indexOf(1) RegExp(1) 定位节点(1) 正则匹配(1) async(1) 异步请求(1) css(2) layui(1) 滚动条(1) JavaScript(1)