MySQL 中 select 高级用法
文章目录
本文将介绍mysql中select的高级用法
一、 union 和 union all
UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。 UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。 同时,每条 SELECT 语句中的列的顺序必须相同.
SQL UNION 语法:
--默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL
--当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行
SELECT column_name FROM table1
UNION
SELECT column_name FROM table2
SQL UNION ALL 语法
--UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
SELECT column_name FROM table1
UNION ALL
SELECT column_name FROM table2
注意事项:
1、UNION 结果集中的列名总是等于第一个 SELECT 语句中的列名
2、UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同
特殊用法:
在不借助实体表的情况下,即只有select,不使用from,如果想获得多行select结果集
select 1 as row_num,'a' as name
union all
select 2,'a'
union all
select 3,'b'
union all
select 4,'c'
执行结果如下:
row_num | name |
---|---|
1 | a |
2 | a |
3 | b |
4 | c |
二、 case when then else end 语法
格式
Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
注意
这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
文章作者 honour
上次更新 2018-12-03