1、统计某一个字段出现的次数:

count(CASE WHEN sex_code = 1 THEN 1 END) AS 'male_number'

2、mybatis多字段输入

provinceName:参数名称,native_place_name:数据库字段名

<if test=" provinceName !=null and !provinceName.isEmpty()">and native_place_name in<foreach collection="provinceName" index="index" item="item" open="(" separator="," close=")">#{item}</foreach>
</if>

前端接入的参数数据类型:

@Param("provinceName") List<String> provinceName

3、替换空格,转移符

regexp_replace(djsm,'\r|\t|\n','') as class_name

4、去除字段空格

trim(a.xsxm) as student_name

5、数据累加函数 @sum

SELECT aa.grade as year,
if(bb.sum_number IS NULL ,aa.sum_number,aa.sum_number-bb.sum_number)  AS 'sum_number',
if(bb.male_number IS NULL ,aa.male_number,aa.male_number-bb.male_number)  AS 'male_number',
if(bb.famale_number IS NULL ,aa.famale_number,aa.famale_number-bb.famale_number)  AS 'famale_number'
from
(SELECT
grade,
@csum:=@csum+num as sum_number,
@dsum:=@dsum+male_number as male_number,
@esum:=@esum+famale_number as famale_number
FROM
(SELECT
grade,
count(*) AS num,
count(CASE WHEN sex_code = 1 THEN 1 END) AS 'male_number',
count(CASE WHEN sex_code = 2 THEN 2 END) AS 'famale_number'
FROM
student_info
WHERE 1=1
and sex_code IS NOT NULL
<if test="majorCode !=99 and majorCode !=null and majorCode !=''">and major_code=#{majorCode}
</if>
GROUP BY
grade) a,
(SELECT @csum := 0) c,(SELECT @dsum := 0) d,(SELECT @esum := 0) e ORDER BY grade)aa
LEFT JOIN
(SELECT
grade,
@csum1:=@csum1+num as sum_number,
@dsum1:=@dsum1+male_number as male_number,
@esum1:=@esum1+famale_number as famale_number
FROM
(SELECT
grade,
count(*) AS num,
count(CASE WHEN sex_code = 1 THEN 1 END) AS 'male_number',
count(CASE WHEN sex_code = 2 THEN 2 END) AS 'famale_number'
FROM
student_info
WHERE 1=1
and sex_code IS NOT NULL
<if test="majorCode !=99 and majorCode !=null and majorCode !=''">and major_code=#{majorCode}
</if>
GROUP BY
grade) a,
(SELECT @csum1 := 0) c,(SELECT @dsum1 := 0) d,(SELECT @esum1 := 0) e ORDER BY grade)bb
ON aa.grade-3=bb.grade
order by
year asc

6、查询某一时间段的数据,前端传入

SELECTgrade,count(*) AS number
FROMstudent_info
WHEREsex_code IS NOT NULL
and grade in (#{year},#{year}-1,#{year}-2)
<if test="unitCode !=99 and unitCode != null and unitCode != ''">and unit_code=#{unitCode}
</if>
GROUP BYgrade

7、模糊查询

<if test="teacherName != '99' and teacherName != null and teacherName != ''">and a.teacher_name like CONCAT(CONCAT('%',#{teacherName}),'%')
</if>
  1. 8、限制查询的条数(如按借阅量的次数排名进行筛选)

定义一个参数:rank

order byhistory_borrowing_book_number desc<if test="rank !=null">limit  #{rank}</if>

但是mybatis自动会给我们参数加引号,导致不断报语法错误,故需要将#{rank}改为${rank},修改后为:

order byhistory_borrowing_book_number desc<if test="rank !=null">limit  ${rank}</if>

改完仍然报错,错误原因,这里用了分页插件,分页插件也有limit限制,两个limit肯定报语法错误,修正方法,将此sql语句括起来当一个新表,select * from 此表。

9、添加sql索引,可以使得查询更快

1.添加PRIMARY KEY(主键索引):
key reader_code_index ('reader_code')
2.添加UNIQUE(唯一索引) :
ALTER TABLE `table_name` ADD UNIQUE ( `column` ) 3.添加INDEX(普通索引) :
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )4.添加FULLTEXT(全文索引) :
ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 5.添加多列索引:
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

10、将含某一字的分为一类

(caseWHEN f.xwdm IS NULL THEN '专科及以下'WHEN f.xwdm LIKE '%学士%' or f.xwdm='交换学习' THEN '本科'WHEN f.xwdm LIKE '%硕士%' THEN '硕士'WHEN f.xwdm LIKE '%博士%' THEN '博士'END) as education_background

11、将一张表中两字段进行拼接:

concat(',',a.zc,a.dezc) AS zhicheng  #这种,如果其中一个为空,则返回空
concat_ws(',',a.zc,a.dezc) AS zhicheng  #这种,如果其中一个为空,也无所谓
group_concat(a.zc SEPARATOR ',')  #这种是sql中的分组拼接函数
concat_ws(',',collect_set(technical_post)) AS technical_post #这种是hive中的分组拼接函数

12、通过出生日期计算年龄

cast((unix_timestamp(current_date)-unix_timestamp(a.csrq,'yyyy-MM-dd'))/31536000 as INT) AS age

13、按某一列值进行排序作为一列

RANK() OVER (ORDER BY a.yjys DESC) as rank

14、读者有学生和老师,怎么判断

 if(a.xgh=b.student_code,b.unit_name,c.unit_name) as unit_name,if(a.xgh=b.student_code,b.major_name,null) as major_name

15、将字段名用符号隔开

GROUP_CONCAT(a.violation_reason SEPARATOR '||') as violation_reason

16、提取字段的首字母

(case
when substr(a.syh,0,1)= 'A' then '马列类'
when substr(a.syh,0,1)= 'B' then '哲学宗教类'
when substr(a.syh,0,1)= 'C' then '社科类'
when substr(a.syh,0,1)= 'D' then '政治法律类'
when substr(a.syh,0,1)= 'E' then '军事类'
when substr(a.syh,0,1)= 'F' then '经济类'
when substr(a.syh,0,1)= 'G' then '文化教育体育类'
when substr(a.syh,0,1)= 'H' then '语言文字类'
when substr(a.syh,0,1)= 'I' then '文学类'
when substr(a.syh,0,1)= 'J' then '艺术类'
when substr(a.syh,0,1)= 'K' then '历史地理类'
when substr(a.syh,0,1)= 'N' then '自然科学类'
when substr(a.syh,0,1)= 'O' then '数理科学与化学类'
when substr(a.syh,0,1)= 'P' then '天文学与地球科学类'
when substr(a.syh,0,1)= 'Q' then '生物科学类'
when substr(a.syh,0,1)= 'R' then '医药卫生类'
when substr(a.syh,0,1)= 'S' then '农业科学类'
when substr(a.syh,0,1)= 'T' then '工业技术类'
when substr(a.syh,0,1)= 'U' then '交通运输类'
when substr(a.syh,0,1)= 'V' then '航空航天类'
when substr(a.syh,0,1)= 'X' then '环境科学与安全科学类'
when substr(a.syh,0,1)= 'Z' then '综合性图书类'
end) AS book_class_name

17、获取当前年

第一种:SELECT year(NOW())
第二种:SELECT SUBSTR(current_date,1,4)

18、hive数据类型的转换

String转intcast(‘abc’ as int)
string转date
cast(‘abc’ as date)

19、mysql字符串的拆分

某一个人可能有多个职称,如下所示:

中教二级,助理研究员

助理工程师,副教授,工程师

助理讲师,高级实习指导教师,讲师

助理工程师,工程师

需要将这些职称进行拆分,以逗号作为拆分符:

SELECTSUBSTRING_INDEX(worker_technical_post,',',-1) as worker_technical_post,count(worker_technical_post) AS 'number'
FROMachievement_analyse_info
WHEREworker_technical_post is not null
GROUP BYSUBSTRING_INDEX(worker_technical_post,',',-1)
ORDER BY number DESC

20、业务逻辑层判断传入接口是否为空

if (StringUtils.isBlank(unitCode)) {return lengthwaysAnalyseMapper.unitProjectNumberUnitIsNull(year);
} else {return lengthwaysAnalyseMapper.unitProjectNumber(year,unitCode);
}

21、sql更新语句

UPDATE project_fundation_info SET project_level=2WHERE project_level IS NULL 

22、将同一字段以逗号分隔,进行拆分

SELECTSUBSTRING_INDEX(worker_technical_post,',',-1)as worker_technical_post,count(worker_technical_post) AS 'number'
FROMachievement_analyse_info

23、单点登录的配置

pom.xml

在前面需要配置:

<!-- CAS 单点登录 --><org.jasig.cas.client.version>3.2.1</org.jasig.cas.client.version>
</properties>
<!-- 单点登录 统一身份认证 start -->
<dependency>
<groupId>net.unicon.cas</groupId>   <artifactId>cas-client-autoconfig-support</artifactId>
<version>1.4.0-GA</version>
</dependency>
<dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-core</artifactId><version>${org.jasig.cas.client.version}</version>
</dependency><!-- 统一身份认证 end -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId><version>1.4.0.RELEASE</version>
</dependency>
<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-cas</artifactId><version>4.1.1.RELEASE</version>
</dependency> 

24、找出科研项目按单位,横向,纵向分组的sql语句

SELECTunitName,SUM(CASE WHEN project_type = '横向' THEN a.fundation ELSE 0 END) AS horizontalProjectFundation,SUM(CASE WHEN project_type = '纵向' THEN a.fundation ELSE 0 END) AS lengthwaysProjectFundation
FROM(SELECTproject_company_name as unitName,project_type,sum(contract_amount) as fundationFROMky_scientific_research_infoWHERE project_company_name is not NULLand annual=#{annual}GROUP BYproject_company_name,project_type)a
GROUP BY unitName

25、将不是yyyy-MM-dd格式的数据转换成yyyy-MM-dd格式

from_unixtime(unix_timestamp((CASEWHEN instr(a.csrq,'JAN')>0 THEN regexp_replace(a.csrq,'JAN','01')WHEN instr(a.csrq,'FEB')>0 THEN regexp_replace(a.csrq,'FEB','02')WHEN instr(a.csrq,'MAR')>0 THEN regexp_replace(a.csrq,'MAR','03')WHEN instr(a.csrq,'APR')>0 THEN regexp_replace(a.csrq,'APR','04')WHEN instr(a.csrq,'MAY')>0 THEN regexp_replace(a.csrq,'MAY','05')WHEN instr(a.csrq,'JUN')>0 THEN regexp_replace(a.csrq,'JUN','06')WHEN instr(a.csrq,'JUL')>0 THEN regexp_replace(a.csrq,'JUL','07')WHEN instr(a.csrq,'AUG')>0 THEN regexp_replace(a.csrq,'AUG','08')WHEN instr(a.csrq,'SEP')>0 THEN regexp_replace(a.csrq,'SEP','09')WHEN instr(a.csrq,'OCT')>0 THEN regexp_replace(a.csrq,'OCT','10')WHEN instr(a.csrq,'NOV')>0 THEN regexp_replace(a.csrq,'NOV','11')WHEN instr(a.csrq,'DEC')>0 THEN regexp_replace(a.csrq,'DEC','12')END),'dd-mm-yy'),'yyyy-mm-dd') as birthday

26、mysql算出3年前的某天

(1)3年前的今天
date_add(now(),interval -3 year)
(2)某一日期三年前的日期
date_add(SJ,interval -3 year)

27、合同日期段格式,截取合同开始时间

原始数据为:

        XXHT
2017.10.23至2021.08.31
2010.11.15至2013.11.14
2013.11.15至2014.11.14
2014.11.15至2016.08.31
2016.09.01至2017.08.31
2005.10.24至2006.10.24
2007.09.01至2008.07.31
2008.09.01至2011.07.31
2011.8.1至2014.8.31

只需要合同的开始日期,故需要进行截取,使用mysql中的substring_index函数

SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(xxht,'.',3),'至',1),'-',1) as HTKSSJ,

其截取后的字段:

  HTKSSJ
2017.10.23
2010.11.15
2013.11.15
2014.11.15
2016.09.01
2005.10.24
2007.09.01
2008.09.01
2011.8.1

MySQL与mybatis查询精华(本人总结)持续更新中相关推荐

  1. MySQL多表查询(通俗易懂)--持续更新

    前置概念 注意:在下面sql语句中,关键词没有用大写,主要为了通俗易懂,大家在写的时候应该还是要大写的. 1.数据库表不规范设计的缺陷引出 首先我们创建一个数据库test_db 然后创建一个员工表:e ...

  2. 关联查询取更新时间_2020年院校校考成绩查询最新汇总,持续更新中!(含九大美院校考时间表)...

    鲁迅美术学院 湖南涉外经济学院 院校成绩查询汇总 院校名称 查询时间 查询网址

  3. mysql查询更新优化_mysql查询优化(持续更新中)

    1.索引不会包含有NULL值的列 (1)   应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描 (2)   数据库设计时不要让字段的默认值为null,可以 ...

  4. 数据库SQL语言学习--数据查询(持续更新中)

    数据库SQL语言学习--数据查询(持续更新中) 上机练习1 1.              启动SQL Server 2008中的 SQL Server Management Studio. 2.   ...

  5. 数据库SQL语言学习--上机练习2(连接查询 嵌套查询)(持续更新中)

    数据库SQL语言学习--上机练习2(连接查询 嵌套查询)(持续更新中) 上机练习2 1.              启动SQL Server 2008中的 SQL Server Management ...

  6. 南昌二中高考2021成绩查询,2020年江西南昌各大高中学校高考喜报出炉,持续更新中……...

    7月23日,江西省2020高考成绩出炉,文理科状元皆来自南昌. 2020年江西省高考状元 文科:杨诗雨 分数:671分 学校:江科附中 理科:尹天骥 分数:705分 学校:南昌二中 目前,南昌各高中学 ...

  7. 2021林西一中高考成绩查询,喜报来了!内蒙古各地区学校喜报(持续更新中...)...

    原标题:喜报来了!内蒙古各地区学校喜报(持续更新中...) 内蒙古各地区学校喜报 北重五中 衡水实验中学 敬业中学 包十五中 宏昌中学 固阳一中 二0二中学 内蒙古自治区各地高考状元 首先看: 内蒙古 ...

  8. 太原市山大附中2021年高考成绩查询,【高考喜报】2019年太原市高中学校高考喜报(持续更新中……)...

    原标题:[高考喜报]2019年太原市高中学校高考喜报(持续更新中--) 现将太原市各校高考喜报整理如下,供大家参考. 目前收集到的学校有: 山西大学附属中学.太原五中.山西省实验中学.太原市知达常青藤 ...

  9. JAVA面试大全(持续更新中...)

    本文旨在收集Java面试过程中出现的问题,力求全面,仅作学习交流,欢迎补充,持续更新中-,部分段落选取自网上,部分引用文章已标注,部分已记不清了,如侵权,联系本人 Java基础 1.面向对象的概述 面 ...

最新文章

  1. 基于TensorFolw的人工智能影像诊断平台工作原理解析
  2. 设置CentOS 6.6系统默认的语言为中文
  3. python打开.data_DataX初体验-python命令启动以及纯java启动
  4. 混合模型和EM---混合高斯
  5. 实体entity、JavaBean、Model、POJO、domain的区别
  6. Windows安装及使用sqlmap
  7. PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe 是什么意思?
  8. Android/Linux boot time分析优化
  9. 事务的acid属性是指_Mysql事务的性质 为什么要用事务?
  10. python_numpy_求L1损失的两种方法
  11. 【无线通信协议笔记】蓝牙篇:传输速率
  12. css字体居中(css字体居中对齐)
  13. 一个项目经理成长的心路历程,是谁在孤独的夜里抹眼泪
  14. python自动化开发-[第九天]-异常处理、进程
  15. java实现爬取文本中的手机号、邮箱以及电话号码
  16. 66W真的比60W充电更快吗?基于Charge pump Charger的快充方案分析
  17. 泊松分酒 泊松是法国数学家、物理学家和力学家。他一生致力科学事业,成果颇多。
  18. 从硬盘中安装ubuntu 18,04
  19. 将LOL英雄联盟模型导入Unity3D
  20. 机器学习基础 LR学习

热门文章

  1. Django工程-ORM模型数据库操作详解(六)
  2. 鸡哥的 AI 驾驶 (Gym - 103186H)
  3. s一般怎么称呼自己的m_75.9%的职场人,都不知道怎么称呼自己的领导
  4. 即时通讯开发时移动端实时音视频直播技术之处理
  5. mysql winpcap_WinPcap 中文技术文档(4.1.2) 第三章
  6. 『闪电健身Mini』-8.8全民健身日,我参加了吗?
  7. 2021年全球与中国气动防抱死制动系统行业市场规模及发展前景分析
  8. 图解 K8s 核心概念和术语
  9. 使用SQL2017的Date数据格式问题
  10. A16z合伙人:为什么“边玩边赚”模式可行,链游与传统游戏如何相互借鉴?