mysql 5.1.49 中子查询内 LIMIT 的替代方案

2024-02-02

SELECT student_id FROM `students` AS s1
WHERE student_id IN 
  (SELECT s2.student_id FROM `students` AS s2
     WHERE s1.year_of_birth = s2.year_of_birth
     LIMIT 10)

无法在我的服务器上处理此查询。它会抛出错误,表明该版本的 mysql 不支持子查询等内的限制(错误 1235)。

我的mysql版本是5.1.49,有什么解决办法吗?

SELECT
    id,
    region
FROM (
    SELECT
        region,
        id,
        @rn := CASE WHEN @prev_region = region
                    THEN @rn + 1
                    ELSE 1
               END AS rn,
        @prev_region := region
    FROM (SELECT @prev_region := NULL) vars, ads T1
    ORDER BY region, id DESC
) T2
WHERE rn <= 4
ORDER BY region, id

谢谢马克·拜尔斯


我想你想要每个生日的十名学生。这是一个最大的每组 n 查询,您可以搜索堆栈溢出 http://www.google.com/search?q=greatest-n-per-group+mysql+site%3Astackoverflow.com看看如何在 MySQL 中完成此操作。

如果 MySQL 支持 ROW_NUMBER 函数,那会很容易,但由于它不支持,您可以使用变量来模拟它。例如,要为每个出生日期获取 3 个学生,您可以这样做:

SELECT
    student_id,
    year_of_birth
FROM (
    SELECT
        year_of_birth,
        student_id,
        @rn := CASE WHEN @prev_year_of_birth = year_of_birth
                    THEN @rn + 1
                    ELSE 1
               END AS rn,
        @prev_year_of_birth := year_of_birth
    FROM (SELECT @prev_year_of_birth := NULL) vars, students T1
    ORDER BY year_of_birth, student_id DESC
) T2
WHERE rn <= 3
ORDER BY year_of_birth, student_id

Result:

1, 1990
2, 1990
5, 1990
4, 1991
7, 1991
8, 1991
6, 1992

测试数据:

CREATE TABLE students (student_id INT NOT NULL, year_of_birth INT NOT NULL);
INSERT INTO students (student_id, year_of_birth) VALUES
(1, 1990),
(2, 1990),
(3, 1991),
(4, 1991),
(5, 1990),
(6, 1992),
(7, 1991),
(8, 1991);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql 5.1.49 中子查询内 LIMIT 的替代方案 的相关文章

随机推荐

  • 简单检查 Twig 模板中的表单字段是否有错误

    在 Twig 模板中 我检查字段是否有如下错误 if form points get errors is not empty 有没有类似的方法 if form points hasErrors 做起来更简单吗 这没什么大区别 但如果我不能做
  • 根据嵌入式 VB.NET 资源的路径自动添加命名空间

    我习惯于在 C 中嵌入资源 并且喜欢它自动向嵌入资源添加命名空间的方式 这允许我做这样的事情 files version1 config xml files version2 config xml files version2 config
  • 在查询中传递字符串而不使用引号 ''

    我有这个查询代码 conditions array codiceBiblio IN gt tot 其中 tot 是一个字符串 例如 2345 5657 4565 5678 在这种情况下 查询将是 SELECT WHERE codiceBib
  • Django 迁移和可定制的可重用应用程序

    大约三周前 我开始编写我的第一个可重用应用程序 但我在处理迁移方面遇到了麻烦 我希望我的应用程序的某些点是可定制的 因此我有一个conf子模块 https github com Aladom django mailing blob 6260
  • 如何回显 DOMNodeList 对象和 DOMElement 对象?

    我正在使用循环来填充名为 list 的数组 它就像一个魅力 content is a DOMNodeList Object value is a DOMElement Object list array foreach content as
  • 导入 io.restassured.RestAssured 无法解析

    您好 我在使用放心 4 1 1 时无法解决该错误 我的 Eclipse IDE 中的库 我已在 pom xml 文件中添加了放心库 但错误仍未解决 我尝试重新导入放心的库https mvnrepository com artifact io
  • 使用 GNU gfortran 字符串化宏

    如何使用 GNU gfortran 字符串化预处理器宏 我想将宏定义传递给 GNU gfortran 然后将其用作代码中的字符串 实际上我想这样做 program test implicit none character len alloc
  • 在 Java 中如何检查 Socket 当前是否已连接? [复制]

    这个问题在这里已经有答案了 我试图找出 Java TCP 套接字是否是现在已连接 以下内容似乎只是告诉我套接字是否已在某个时刻连接 而不是当前是否仍处于连接状态 socket isConnected 任何帮助表示赞赏 谢谢 假设您对协议有一
  • 使用 Java 8 将 int 数组转换为 long 数组?

    我尝试了几种方法都没有成功 this tileUpdateTimes is long and other tileUpdateTimes is int this tileUpdateTimes Arrays stream other til
  • gem 原生扩展到底是什么?

    我觉得本机扩展就像库一样 您应该在尝试安装这些依赖于本机扩展的 gem 之前将其安装到系统上 像ImageMagic图书馆 那是对的吗 关于本机扩展 我们还应该了解什么吗 gem 本机扩展might链接到需要预安装的单独库 以及RMagic
  • MongoDB C# 驱动程序:查询拦截器?

    MongoDB C 驱动程序是否支持像实体框架这样的查询拦截器 我检查了文档但找不到任何内容 基本上我需要做的是确保对数据库的某些查询 根据上下文 始终应用某些限制 例如 如果我的文档可以被软删除 那么我总是需要确保为 Soft Delet
  • 动态设置每个记录器实例的 Nlog 日志级别 ASP.Net Core 2.x

    客观的 动态选择我想要详细日志记录的 HTTP 请求 不同的日志级别 Overview 我有一个正在运行的 ASP Net core 2 1 Web 服务器 一旦投入生产 如果我需要调试问题 我希望能够更改日志级别 我已经找到了如何全局更改
  • 使用 urllib2 进行代理

    我打开网址 site urllib2 urlopen http google com 我想做的是用代理以相同的方式连接 我有一个地方告诉我 site urllib2 urlopen http google com proxies http
  • Videomixer 在源上失败,而不是在 Videotestsrc 上失败

    我想在一个视频文件中同时播放两个不同的本地视频文件 窗户 下面的代码在没有解复用器和解码器的情况下工作正常 static void play video GMainLoop loop GstElement pipeline videomix
  • 如何检查方法是否始终返回值

    我写了一个编译器 它已经可以正常工作了 它检查所有非 void 方法是否至少有一个 return 语句 但它不检查非 void 方法中的所有代码路径是否都返回一个值 因此 例如 如果我有以下代码 int function bool a if
  • 使用 ObserveOnDispatcher 进行单元测试

    我的视图模型中有一些代码如下 miService GetSomething par1 par2 ObserveOnDispatcher Subscribe dt gt DoSomething dt 然后在我的测试中 我 嘲笑 我的服务如下
  • 如何在离线模式下使用 SBT 进行构建

    相当于什么mvn o在SBT 当我检查我的 ivy 存储库时 我可以看到依赖项 jarcache groupId artifactId jars 当我尝试在没有互联网连接的情况下构建它时 它仍然会这样做Resolving 事情并显示未解决的
  • Windows 上的端口 getrlimits/setrlimit

    我正在寻找一种在 Windows 上移植 POSIX getrlimits setrlimit 功能的方法 我们的应用程序有时会遇到非常深的递归 并且达到默认堆栈限制 导致堆栈溢出 为了防止这种情况 我们编写了以下代码 struct rli
  • 如何获取文件的正确文件创建日期?

    我不需要上次修改时间 也不需要上次文件访问时间 而是文件创建时间 我还没有找到这方面的信息 也许一些库 Path p Paths get f getAbsoluteFile toURI BasicFileAttributes view nu
  • mysql 5.1.49 中子查询内 LIMIT 的替代方案

    SELECT student id FROM students AS s1 WHERE student id IN SELECT s2 student id FROM students AS s2 WHERE s1 year of birt