SQL装13的一些写法

119 篇文章 8 订阅
67 篇文章 2 订阅
一些当你离职后,让老板狂拍大腿的代码

Oracle:

1.EXCEPT

EXCEPT是指在第一个集合中存在,但是不存在于第二个集合中的数据。

(selectA) EXCEPT  (select B)

INTERSECT返回 两个结果集的交集(即两个查询都返回的所有非重复值)

2.wm_contact

功能:分组拼接

select id,wm_concat(name) name from table
group by id;

转换前:

idname
1李白
1青莲居士
2杜甫
2少陵野老

转换后:

idname
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('小王'),('小红'),('小丽'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值