Mysql七种高阶用法,让你少走弯路

首先先让我们创建表,SQL如下


CREATE TABLE `moives` (`id` int(11) NOT NULL AUTO_INCREMENT,`movie_name` varchar(200) COLLATE utf8mb4_bin DEFAULT NULL,`actor_name` varchar(100) COLLATE utf8mb4_bin DEFAULT NULL,`price` decimal(10,0) DEFAULT NULL,`release_date` date DEFAULT NULL,PRIMARY KEY (`id`),KEY `NewTable_id_IDX` (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

1、使用自定义字段排序
a、通过FIELD关键字,定义排序顺序

SELECT  * FROM  moives  order by  FIELD(actor_name,"成龙","刘亦菲","范冰冰","靳东") 

b、使用 case when转换为自定义排序

SELECT  * FROM  moives  order by 
CASE actor_nameWHEN "成龙" THEN 1WHEN "刘亦菲" then 2when "范冰冰" then 3else 4
end  DESC 

c、使用locate instr 两个函数进行排序
mysql的instr函数有着相似的功能,instr(str,sub)返回的是字符串sub在字符串str第一次出现的位置,其中instr(str,sub) = 0 表示字符串str不包含字符串sub。

还能和like一样作为模糊查询


SELECT  * FROM  moives  order by  LOCATE(actor_name,"成龙,刘亦菲,范冰冰,靳东") 
SELECT  * FROM  moives  order by  INSTR("成龙,刘亦菲,范冰冰,靳东",actor_name) 

2、null空值排序

SELECT  * FROM  moives  order by  IF(ISNULL(actor_name),2,1),price  

3、case when表达式语句

SELECT*,CASEWHEN price>90 THEN "昂贵"WHEN price>80 then "贵"when price >70 then "比较亲民"else "不及格"end level
FROMmoives

4、分组连接函数 group_concat

SELECT 
actor_name,GROUP_CONCAT(movie_name),GROUP_CONCAT(price)  
FROM moives m 
group by actor_name
-- 按照字段排序,使用自定义分隔符
SELECT 
actor_name,GROUP_CONCAT(movie_name order by price DESC SEPARATOR "-"),GROUP_CONCAT(price order by price DESC  SEPARATOR "-")  
FROM moives m 
group by actor_name

5、分组后统计汇总 WITH ROLLUP


SELECT 
actor_name,SUM(price)
FROM moives m  
group by actor_name WITH ROLLUP 

6、子查询提取 with as

其实就是把一大堆重复用到的sql语句放在with as里面,取一个别名,后面的查询就可以用它,这样对于大批量的sql语句起到一个优化的作用,而且清楚明

With
m1 AS(SELECT * FROM moives m WHERE price >50),
m2 AS (SELECT * FROM moives WHERE price>80)
SELECT  * FROM  m1 WHERE  m1.id NOT  IN (SELECT m2.id FROM m2) AND m1.actor_name="刘亦菲"

7、优雅处理数据插入,更新时主键-唯一键重复

SELECT * FROM  moives WHERE  id>10
INSERT INTO moives (id, movie_name, actor_name, price, release_date) VALUES(13,"神话11","成龙",100,"2005-12-22");
-- 使用ignore 有则忽略,无则插入
INSERT IGNORE INTO moives (id, movie_name, actor_name, price, release_date) VALUES(13,"神话11","成龙",100,"2005-12-22");
-- 使用replace 有则删除之后插入,无则直接插入
REPLACE   INTO moives (id, movie_name, actor_name, price, release_date) VALUES(13,"神话11","成龙",1020,"2005-12-22");
-- on duplicate key update 有就更新,没有就插入
INSERT IGNORE INTO moives (id, movie_name, actor_name, price, release_date) VALUES(13,"神话11","成龙",100,"2005-12-22")
on DUPLICATE KEY UPDATE  price=price+100

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/181855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GEO-AI】SAM-Geo库(segment-geospatial)入门教程

今年4月份,Meta公布了它图形分割模型Segment-Anything,简称SAM。当时就想着这个东西用在遥感影像分割上应该效果不错,奈何自己能力有限,没有办法上手实践。偶然间看到有介绍SAM-Geo工具包的文章,决定研究一番&#xff…

Vue中使用正则表达式进行文本匹配和处理的方法

1. 正则表达式基础 正则表达式是一种用来匹配字符串的模式。它由普通字符(例如字符 a 到 z)和特殊字符(称为"元字符")组成。以下是一些基本的正则表达式示例: 匹配邮箱的正则表达式: /^[\w-](\…

windows环境下载安装Nginx并配置防火墙

1、下载Nginx Nginx官网 下载稳定版 2、下载之后,解压 3、启动Nginx,命令:start nginx 最小化该窗口 主要,不要关闭,如果关闭,表示nginx服务关闭了 4、测试是否启动成功 在浏览器中输入http://localhos…

2021年09月 Scratch图形化(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 程序中要使用不确定的数值,这时要用到的是?( ) A、图章 B、变量 C、广播 D、随机数 答案:D 第2题 执行下列程序后,角色会说?( ) A、3 B、6 C、10 D、15 答案:D 第3题…

广州华锐视点:基于VR元宇宙技术开展法律法规常识在线教学,打破地域和时间限制

随着科技的飞速发展,人类社会正逐渐迈向一个全新的时代——元宇宙。元宇宙是一个虚拟的、数字化的世界,它将现实世界与数字世界紧密相连,为人们提供了一个全新的交流、学习和娱乐平台。在这个充满无限可能的元宇宙中,法律知识同样…

关于MongoDB

MongoDB介绍 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其…

Panorama SCADA平台助力智能建筑管理,掌控未来建筑!

来源:宏集科技 工业物联网 宏集方案 Panorama SCADA平台助力智能建筑管理,掌控未来建筑! 欢迎关注虹科,为您提供最新资讯! 前言 在现代智能建筑管理中,随着设施管理(FM)、建筑管理…

数据结构与算法--特殊的完全二叉树--堆,堆排序,利用堆解决topk的问题

目录 前言 1.树概念及结构 1.1树的概念 1.2 树的相关概念 1.3 树的表示 1.4 树在实际中的运用(表示文件系统的目录树结构) 2.二叉树概念及结构 2.1概念 2.2现实中的二叉树: 2.3 特殊的二叉树: 2.4 二叉树的性质 …

YOLOv7独家原创改进:自研独家创新MSAM注意力,通道注意力升级,魔改CBAM

💡💡💡本文自研创新改进:MSAM(CBAM升级版):通道注意力具备多尺度性能,多分支深度卷积更好的提取多尺度特征,最后高效结合空间注意力 1)作为注意力MSAM使用; 推荐指数:五星 MSCA | 亲测在多个数据集能够实现涨点,对标CBAM。 在道路缺陷检测任务中,原始ma…

视频号小店如何运营?核心点是什么?实操详解!

我是电商珠珠 我做视频号小店也有一年的时间了,也拥有了自己的视频号小店团队。 很多新手对于视频号小店并不知道怎么做,总是偏离最初的重心,所以一部分人刚开始做的时候,觉得自己没有那个能力。 看着店铺的流量和销量日趋减少…

基于STM32+定时器中断和定时器外部时钟(标准库函数讲解)

前言 本篇博客主要学习了解定时器的标准库函数,以及定时器中断进行LED灯的反转,还有定时器外部时钟获取脉冲计数功能。本篇博客大部分是自己收集和整理,如有侵权请联系我删除。 本篇博客主要是对通用定时器来讲解,功能适中比较常…

Java高级技术(注解)

一,注解 二,案例 三,注解原理 四,元注解 五,案例 六,解析注解 七,案例

嵌入式工程师必备的编程语言有哪些?

嵌入式的运用的编程语言主要的是要求精通C语言,另外也要涉及到汇编,C、shell、Ada、JavaScript、Python等。 C语言 C语言是嵌入式开发中最常用的编程语言之一。它具有语法简单、易于理解、可移植性强等特点。同时,由于C语言可以直接接触硬件…

vue基础入门踩坑备忘

document.getElementById(mask).innerHTML document.getElementsByClassName(mask)[index].innerHTML console.log(document.getElementsByClassName(mask)[index].innerHTML); vue加链接(已设置过路由):$router.push({ path: /goods/default_agent_price}) --…

unity UI特效遮罩

using System.Collections; using System.Collections.Generic; using UnityEngine;/**UI特效遮罩 1.需要将ScrollRect 的遮罩Mask 换为 2D Mask2.将特效的Render里面的 Masking 设置为*/ public class UIParticleMaskControll : MonoBehaviour {// Start is called before …

简易键值对文本解析

除了json,xml,protobuf等成体系的配置文件外&#xff0c;简单的文本格式“key value”的配置文件也在很多开源项目中存在&#xff0c;这种配置文件的好处是简单、易于理解和编辑。 #include <stdio.h> #include <string.h>#define MAX_LINE_LENGTH 1024void Parse…

低代码平台:房企建造领域数字化转型的必备利器

在数字化浪潮的推动下&#xff0c;越来越多的行业开始向数字化转型迈进&#xff0c;房地产建筑管理也不例外。低代码平台作为一种新兴的技术趋势&#xff0c;正逐渐成为推进房地产建筑管理数字化转型的重要工具。 房地产建筑管理作为一个庞大而复杂的行业&#xff0c;数字化转…

SQL——增删改查条件查询

1.查询不同行——DISTINCT SELECT DISTINCT column_name FROM table_name DISTINCT 关键字需位于列名之前。 2.在指定列中插入数据——INSERT INSERT INTO courses (name, student_count, created_at, teacher_id) VALUES (Flash Sale, 100, 2018-01-01, 5); 3.更新数据——U…

『Confetti 喜庆散花插件の使用』

以下用 VUE3 语法 举例使用&#xff1a; npm install js-confetti<script setup lang"ts"> import JSConfetti from js-confetticonst confetti new JSConfetti()function showConfetti() {confetti.addConfetti() } </script><template><h1 …

视频剪辑技巧:批量剪辑新思路,AI智剪来助阵

在视频制作过程中&#xff0c;剪辑是一项至关重要的任务。然而&#xff0c;对于许多创作者来说&#xff0c;批量剪辑视频是一项耗时且繁琐的工作。传统的批量剪辑方法通常要创作者逐个打开视频文件&#xff0c;进行剪辑、调整色彩等操作。这种方法不仅效率低下&#xff0c;而且…