
一些当你离职后,让老板狂拍大腿的代码
Oracle:
1.EXCEPT
EXCEPT是指在第一个集合中存在,但是不存在于第二个集合中的数据。
(selectA) EXCEPT (select B)
INTERSECT返回 两个结果集的交集(即两个查询都返回的所有非重复值)
2.wm_contact
功能:分组拼接
select id,wm_concat(name) name from table
group by id;
转换前:
id | name |
1 | 李白 |
1 | 青莲居士 |
2 | 杜甫 |
2 | 少陵野老 |
转换后:
id | name |
1 | 李白,青莲居士 |
2 | 杜甫,少陵野老 |
Mysql:
1.group_concat
功能:分组拼接,(同Oracle的wm_concat)
查询结果后,横向的拼接用concat, 纵向的拼接用group_concat
2.with rollup
功能:分组求和功能
现在有这样一张学生表,里面的数据如下所示。
如果想对根据学生,对科目,分数求和,可以这样写。
如果想在这个的基础上,求出学生的总分数,应该怎么做。
使用 WITH ROLLUP,此函数是对聚合函数进行求和,注意 with rollup是对 group by 后的第一个字段,进行分组求和。
ORDER BY不能在rollup中使用,两者为互斥关键字,如果使用,会抛出以下错误:Error Code:1221. Incorrect usage of CUBE/ROLLUP and ORDER BY。mysql5.7中是不支持的,在8.0以后支持。
sqlserver:
1.select的新的写法,
select * from ( values('小王'),('小红'),('小丽'))