首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL和窗口函数

问MySQL和窗口函数
EN

Database Administration用户
提问于 2013-04-16 15:08:27
回答 2查看 36K关注 0票数 31

MySQL似乎不支持窗口函数。

简单地说:COUNT(*) OVER() AS cnt不起作用。

我不确定这是否也适用于商业版本(我假设社区版本是有限的子集)。

如果没有,如何处理这个缺失的功能?

EN

回答 2

Database Administration用户

发布于 2013-04-17 07:02:05

MySQL不支持窗口函数(*)。我们称之为“穷人的窗口功能”的形式是组_凹()。

使用GROUP_CONCAT来模拟窗口函数有很多技巧。它们不那么漂亮(在语法上),有时也过于有限。我写了几封。请参阅我的博客文章抱怨缺少窗口函数,并链接到基于GROUP_CONCAT的各种解决方案。

特别是,在组中选择特定的非聚合列数据和SQL:每组选择顶级N条记录,这是另一种解决方案可能是您感兴趣的,并可能给您一个启动。

关于GROUP_CONCAT(),您应该注意的是:

  • 可以使用DISTINCT
  • 可以使用ORDER BY ... ASC/DESC
  • 可以设置SEPARATOR
  • 作为任何聚合函数,它丢弃空值;这方面有很多技巧。

(*) MySQL 8中增加了对窗口函数的支持

票数 36
EN

Database Administration用户

发布于 2016-12-25 17:37:52

值得注意的是,MariaDB 10.2 (2017年5月发布)有窗口函数。如果您需要MySQL和窗口函数,那么这当然是一个值得追求的途径。

票数 12
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/40130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档