工作上常用的sql写法/函数

news/2024/12/2 22:33:36/

保留两位小数

10 :十进制
2:两位小数
100:除数

convert(taar.f_score/100,decimal(10,2)) 

日期转换

FROM_UNIXTIME(f_submit_time/1000, '%Y-%m-%d %T');
UNIX_TIMESTAMP(NOW()) * 1000;
FROM_UNIXTIME(UNIX_TIMESTAMP(NOW()) * 1000/1000, '%Y-%m-%d %T'); 

group by having

作用

where在前是对group by分组之前的筛选,having在后是对group by分组之后的筛选

eg

查找分组之后只有一个的数据

 select * from exam.t_exam_regist ter group by ter.f_exam_id having count(*) = 1 limit 2;

case when = switch case

case 字段名
when 值 then 结果

else 其余结果(默认值)end

eg:

case taar.f_status when 1 then '未开始'when 2 then '已通过'when 3 then '未通过'when 4 then '进行中'
ELSE '未开始' ENDas '状态'

case when 条件 then 结果
else 其余结果 end

EXISTS

作用

根据主查询的数据,每一行都放到子查询中做条件验证,根据验证结果(TRUE 或者 FALSE),TRUE的话该行数据就会保留

eg

SELECT * from emp e where exists (SELECT * from dept p where e.dept_id = p.dept_id and e.dept_name != p.dept_name)

GROUP_CONCAT

作用

组连接函数可以返回分组后指定字段的字符串连接形式,并且可以指定排序逻辑(必须和group by 一起用)

eg

SELECT name, GROUP_CONCAT(title ORDER BY id desc  SEPARATOR '-') from order_diy GROUP BY name ORDER BY NULL;

联表更新

作用

更新 emp 表和 dept 表关联数据

eg

update emp, dept set emp.dept_name = dept.dept_namewhere emp.dept_id = dept.dept_id;

ORDER BY 空值 NULL 排序

作用

当字段中存在 null 值时,会对我们的排序结果造成影响。我们可以通过 「ORDER BY IF(ISNULL(title), 1, 0)」 语法将 null 值转换成0或1,来达到将 null 值放到前面还是后面进行排序的效果。

eg

SELECT * FROM test_rollup ORDER BY  IF(ISNULL(title), 0, 1), money;

with rollup 分组统计数据的基础上再进行统计汇总

作用

MySql 中可以使用 with rollup 在分组统计数据的基础上再进行统计汇总,对聚合函数进行求和,注意 with rollup是对 group by 后的第一个字段,进行分组求和。。(不能和orderBy一起用,8.0以后支持)

eg

SELECT name, SUM(money) as money FROM order_diy GROUP BY name WITH ROLLUP;
SELECT coalesce(name, '总金额') name, SUM(money) as money FROM order_diy GROUP BY name WITH ROLLUP;

with as 提取临时表别名

作用

「多个子查询都需要使用同一个子查询」的结果,那么就可以用with as,将共用的子查询提取出来,加个别名。后面查询语句可以直接用,对于大量复杂的SQL语句起到了很好的优化作用

eg

with aswith t1 as (SELECT * from order_diy where money > 30),t2 as (SELECT * from order_diy where money > 60)SELECT * from t1 where t1.id not in (SELECT id from  t2) and t1.name = '周伯通';

存在就更新,不存在就插入

INSERT INTO `news` (`news_title`, `news_auth`, `news_code`) VALUES ('新闻3', '小花', 'wx-0003') on duplicate key update news_title = '新闻3';-- 第二次执行修改语句INSERT INTO `news` (`news_title`, `news_auth`, `news_code`) VALUES ('新闻4', '小花', 'wx-0003') on duplicate key update news_title = '新闻4';

http://www.ppmy.cn/news/238542.html

相关文章

CDN如何帮助我们的网站实现安全?

各类网络攻击正在变得越来越复杂,它们有可能导致服务可用性的严重中断和企业的财务损失。根据Gartner的数据,IT行业平均停机每分钟就将为企业带来超过3万元的损失。 对于每个具有在线相关业务的企业,如何能以安全、可靠和快速的方式服务于用…

柯尼卡/KonicaFTP扫描设置

1、在扫描一体机上问网络IP地址,新注册FTP. 2、在通讯簿FTP输入对应的IP、用户ID.密码.点确定。 3、在需要扫描的电脑上安装对应驱动扫描程序,设置对应文件夹。

大数据存储与处理技术探索:Hadoop HDFS与Amazon S3的无尽可能性【上进小菜猪大数据】

上进小菜猪,沈工大软件工程专业,爱好敲代码,持续输出干货。 大数据时代带来了数据规模的爆炸性增长,对于高效存储和处理海量数据的需求也日益迫切。本文将探索两种重要的大数据存储与处理技术:Hadoop HDFS和Amazon S3…

【PyQt5】(01)PyQt的详细介绍

文章目录 前言一、PyQt的前世今生1.1 PyQt6、PyQt5和PyQt41.2 商业版和开源版1.3 支持的操作系统 二、 PyQt的优点三、PyQt的应用场景总结 前言 PyQt是使用Python语言编写的QT库的界面工具包。QT是一个跨平台的C应用程序开发框架,可以用于创建高性能、高可靠性、图形…

java 多线程环境空指针异常

示例代码 private Listener mlistener; public void onDestroy() { if (mListener ! null) { listener.remove(); // Null Pointer Exception at this line } } 在自动化测试中,这块会偶先一个空指针问题,如果根据activity生命周期来说&…

docker-compose通过volume恢复mysql数据

概述 docker rm是docker删除容器的命令。 会清空容器内的所有数据和配置,即真正的将容器清空并删除。 但是之前通过volume挂载到宿主机上是不受影响的。 docker rm -v如果是-v的命令那么会同时删除通过volume映射到宿主机上的文件 通过volume恢复数据 使用docke…

20个Golang片段让我不再健忘 | 京东云技术团队

前言 本文使用代码片段的形式来解释在 go 语言开发中经常遇到的小功能点,由于本人主要使用 java 开发,因此会与其作比较,希望对大家有所帮助。 1. hello world 新手村的第一课,毋庸置疑。 package mainimport "fmt"…

爬虫语言最好用的是那种?

目前最好用的爬虫语言有多种选择,具体的选择取决于你的需求和个人偏好。Python是较为流行的爬虫语言之一,其生态系统丰富,拥有大量优秀的爬虫框架和工具。另外,JavaScript、Go、Ruby等编程语言也可以用于爬虫开发。总之&#xff0…