当前位置: 首页 > news >正文

MySQL 8 其他新特性

MySQL 8 其他新特性

MySQL 8 其他新特性


1. MySQL 8 新特性概述

1.1 MySQL 8.0 新增特性

  • 窗口函数:支持ROW_NUMBER()RANK()DENSE_RANK()等函数,可对分区数据进行排序、排名和分析。
  • 公用表表达式(CTE):支持普通CTE和递归CTE,简化复杂查询的编写。

1.2 MySQL 8.0 移除的旧特性

  • 部分过时的SQL模式、系统变量和语法被移除,以优化性能和规范性。

2. 新特性1:窗口函数

2.1 使用窗口函数前后对比

窗口函数与分组聚合不同,它不会将结果合并为一条记录,而是将聚合结果附加到每一条原始记录中,便于进行分区内的排名、前后对比等操作。

2.2 窗口函数分类

  • 静态窗口函数:窗口大小固定(如序号函数、分布函数)。
  • 动态窗口函数:窗口大小随记录变化(如前后函数、首尾函数)。

2.3 语法结构

窗口函数名() OVER ([PARTITION BY 分区列] [ORDER BY 排序列]
) AS 别名

2.4 分类讲解

1. 序号函数

函数 说明
ROW_NUMBER() 顺序排序,生成连续唯一序号
RANK() 并列排序,相同值序号相同,后续序号不连续(如1,1,3)
DENSE_RANK() 并列排序,相同值序号相同,后续序号连续(如1,1,2)

示例:按类别对商品价格降序排序

-- ROW_NUMBER()
SELECT ROW_NUMBER() OVER(PARTITION BY category_id ORDER BY price DESC) AS row_num,id, category_id, category, NAME, price, stock
FROM goods;-- RANK()
SELECT RANK() OVER(PARTITION BY category_id ORDER BY price DESC) AS row_num,id, category_id, category, NAME, price, stock
FROM goods;-- DENSE_RANK()
SELECT DENSE_RANK() OVER(PARTITION BY category_id ORDER BY price DESC) AS row_num,id, category_id, category, NAME, price, stock
FROM goods;-- 取每个类别价格最高的3种商品
SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY category_id ORDER BY price DESC) AS row_num,id, category_id, category, NAME, price, stockFROM goods
) t WHERE row_num <= 3;

2. 分布函数

函数 说明
PERCENT_RANK() 等级百分比,公式:(rank - 1) / (rows - 1)
CUME_DIST() 累积分布值,查询小于或等于当前值的比例

示例:计算商品价格的百分比排名和累积分布

-- PERCENT_RANK()
SELECT RANK() OVER w AS r,PERCENT_RANK() OVER w AS pr,id, category_id, category, NAME, price, stock
FROM goods
WHERE category_id = 1 
WINDOW w AS (PARTITION BY category_id ORDER BY price DESC);-- CUME_DIST()
SELECT CUME_DIST() OVER(PARTITION BY category_id ORDER BY price ASC) AS cd,id, category, NAME, price
FROM goods;

3. 前后函数

函数 说明
LAG(expr, n) 返回当前行前n行的expr
LEAD(expr, n) 返回当前行后n行的expr

示例:查询商品价格与前/后一个商品的差值

-- LAG():前一个商品价格差值
SELECT id, category, NAME, price, pre_price, price - pre_price AS diff_price
FROM (SELECT id, category, NAME, price,LAG(price, 1) OVER w AS pre_priceFROM goods WINDOW w AS (PARTITION BY category_id ORDER BY price)
) t;-- LEAD():后一个商品价格差值
SELECT id, category, NAME, behind_price, price, behind_price - price AS diff_price
FROM (SELECT id, category, NAME, price,LEAD(price, 1) OVER w AS behind_priceFROM goods WINDOW w AS (PARTITION BY category_id ORDER BY price)
) t;

4. 首尾函数

函数 说明
FIRST_VALUE(expr) 返回分区内第一个expr的值
LAST_VALUE(expr) 返回分区内最后一个expr的值

示例:按价格排序,查询每个类别第一个和最后一个商品的价格

-- FIRST_VALUE()
SELECT id, category, NAME, price, stock,FIRST_VALUE(price) OVER(PARTITION BY category_id ORDER BY price) AS first_price
FROM goods;-- LAST_VALUE()
SELECT id, category, NAME, price, stock,LAST_VALUE(price) OVER w AS last_price
FROM goods 
WINDOW w AS (PARTITION BY category_id ORDER BY price);

5. 其他函数

函数 说明
NTH_VALUE(expr, n) 返回分区内第nexpr的值
NTILE(n) 将分区数据分为n个桶,记录桶编号

示例:

-- NTH_VALUE():查询排名第2和第3的价格
SELECT id, category, NAME, price,NTH_VALUE(price, 2) OVER w AS second_price,NTH_VALUE(price, 3) OVER w AS third_price
FROM goods 
WINDOW w AS (PARTITION BY category_id ORDER BY price);-- NTILE():按价格将商品分为3组
SELECT NTILE(3) OVER w AS nt, id, category, NAME, price
FROM goods 
WINDOW w AS (PARTITION BY category_id ORDER BY price);
http://www.jsqmd.com/news/983796/

相关文章:

  • 163MusicLyrics:一站式音乐歌词下载与格式转换神器
  • 多 Agent 架构:从单个助手到协作团队
  • SB-Admin-Angular项目架构解析:理解AngularJS模块化设计
  • 终极指南:3步实现同花顺Python自动化交易,告别手动盯盘
  • Nature声明!不刊登含AI创作图像的稿件
  • 85个公共Tracker终极指南:三步解决BT下载缓慢问题
  • 可视耳勺到底值不值得买?,西圣、蜂鸟建议买哪一款?必看指南!
  • 河南评估机构主流指标横评:信息梳理与选型避坑指南 - 信息热点
  • 2026年自动光杆排线器/全自动光杆排线器/伺服排线器厂家推荐:多功能排线机与排线器配件品牌深度解析及选购指南 - 企业推荐官【官方】
  • 2026镇海新房除甲醛公司哪家专业?垂直测评:宁波博豪环保凭硬实力脱颖而出 - 专注室内空气检测治理
  • 2026年卧式打包机企业推荐排行榜,谁更专业? - 信息热点
  • 2026 年 6 月最新 | 上海高企认定代办公司|靠谱高新申报代理机构,一站式代办高企认定 - 信息热点
  • 告别闪退和配置错误:手把手教你用 Sonar-Scanner 4.7 在 Windows 上扫描 Java 项目
  • AI大模型产品经理学习路线(非常详细) AI产品经理 vs 通用产品经理
  • 终极指南:如何利用HybridCLR实现Unity原生C热更新零成本革命
  • i.MX RT1020跨界MCU实战指南:从Cortex-M7内核到外设选型与低功耗设计
  • 2026宁波北仑区除甲醛公司怎么选?专业测评力荐宁波博豪环保 - 专注室内空气检测治理
  • 终极TikTok评论采集工具:3分钟获取完整评论数据,无需编程基础
  • i.MX RT1160硬件设计实战:从数据手册到SD/eMMC、以太网时序与启动配置
  • 方法类专利选哪种?2026工艺/算法/流程/配方专利选型全攻略|为什么只能申发明专利、适配场景、通过率、避坑误区解析|广州正规专利代理机构TOP3实测测评 - 信息热点
  • 避开这些坑!ArcGIS成本路径分析从数据准备到结果可视化的保姆级避坑指南
  • 铁岭银州区车灯升级门店专业度排行:合规工艺双维度 - 起跑123
  • 3步配置Kodi IPTV Simple客户端:打造你的家庭直播电视中心
  • 路径规划算法-备忘
  • 如何在VS Code笔记本中使用vscode-markdown-mermaid绘制专业流程图:完整指南
  • 2026年AI产品经理最全学习路线:月薪30K+!4个月逆袭!手把手教你拿下AI大模型高薪Offer!
  • 如何在Windows资源管理器中快速识别APK文件:终极图标显示解决方案
  • 微信聊天记录备份工具:你的数字记忆守护者
  • 成都贝之森科技,实力与口碑俱佳的选择 - 信息热点
  • 2026义乌爪钻批发行业三大核心趋势解读 - 信息热点