![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
a_ran
程序员,公众号:进击的代码
展开
-
MySQL 使用 INTERVAL() 函数 实现数据按区间分组
首先看一下它的定义:INTERVAL(N,N1,N2,N3,..........)INTERVAL()函数进行比较列表(N1,N2,N3等等)中的N值。该函数如果N下面的代码是显示 INTERVAL()函数如何工作的一个简单的例子:mysql>SELECT INTERVAL(6,1,2,3,4,5,6,7,8,9,10);+------------------------原创 2017-11-10 10:33:09 · 38279 阅读 · 1 评论 -
MySQL 当记录不存在时insert,当记录存在时update
MySQL当记录不存在时insert,当记录存在时更新;网上基本有三种解决方法第一种:示例一:insert多条记录假设有一个主键为 client_id 的 clients 表,可以使用下面的语句:INSERT INTO clients(client_id, client_name, client_type)SELECT supplier_id, suppli转载 2017-11-15 14:04:08 · 3171 阅读 · 0 评论 -
MySQL select 子查询复用,进行聚合计算
当对一个复杂的子查询结果进行分组(group by)聚合计算时, 有时需要进行多次聚合,如果不能复用自查寻的结果,查询效率会很低下 在有些情况下,可以使用 IF 函数进行不同条件的聚合示例如下: 假设子查询的结果有班级,学号,平均分这3个字段(class, no, score) 现在想求每个班级的总人数和及格人数复用前:select A.class A.sum, B.sumfrom(se原创 2017-12-05 18:41:59 · 9523 阅读 · 2 评论 -
MySQL 优化百分比/比例计算
通常使用 SQL 语句求百分比时,需求扫描表两次,一次是总数一次是满足条件的个数 其实可以使用 INTERVAL 函数优化,只扫描表一次(在表很大时,几乎可以少花费一半的时间)示例如下: 假设有一个分数表 TScore,包含班级,学号,平均分这3个字段(class, no, score) 现在想求每个班级的及格率(>=60人数/总人数*100)一般方法:select Total.class,原创 2017-12-07 13:57:23 · 11616 阅读 · 1 评论