sql按返回总条数进行间隔取数据

mysql数据库,如果需要返回的总条件是7200条,在条件中按间隔进行过滤。即每隔几条取一个,总条件不超过7200条。

可以先加上行号,然后行号取模

SET @row_number = 0;
SELECT *
FROM (
    SELECT (@row_number := @row_number + 1) AS row_num, your_table.*
    FROM your_table
) AS numbered_rows
WHERE row_num % 2 = 0;

%2就是2行取1个,%10就是10行取一个

隔两行取一个,直接求模计算吧,简单些,隔几个 MOD(row_number, 2) 就填几

img

SELECT * FROM (
   SELECT *, @row := @row + 1 AS `row_number`
   FROM tt, (SELECT @row := 0) r
) AS t
WHERE MOD(`row_number`, 2) = 0;

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7538999
  • 你也可以参考下这篇文章:MySQL 数据库sql命令查看表属性,mysql查看指定表的各字段最大值、是否为空等属性实例演示
  • 除此之外, 这篇博客: 阿里面试官必问的12个MySQL数据库基础知识,哪些你还不知道?中的 2、什么是SQL? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。

    作用:用于存取数据、查询、更新和管理关系数据库系统。

  • 您还可以看一下 李胜金老师的MySQL数据库从入门到精通实战教程课程中的 MySQL 重命名用户小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以解决该问题。

    首先,需要使用 LIMIT 子句来限制返回的总条件数,例如:

    SELECT * FROM table_name LIMIT 7200;
    

    接着,可以使用 MOD 函数来实现间隔取数的效果,MOD 函数返回一个除法余数。例如,想要每隔 N 条记录返回一条,可以使用:

    SELECT * FROM table_name WHERE MOD(id,N)=0 LIMIT 7200;
    

    其中,id 为表中的主键,N 为需要设置的间隔值。需要注意的是,使用 MOD 函数可能会影响查询性能。如果数据量非常大,可以考虑使用批次查询的方式,先查询出所有符合条件的主键,然后再分批查询出全部记录,以减轻查询的压力。

    代码示例:

    -- 每隔10条记录返回一条,限制总条件不超过7200条
    SELECT * FROM table_name WHERE MOD(id,10)=0 LIMIT 7200;
    

    希望这个解决方案可以帮助到你。如果需要进一步优化查询性能,可以考虑增加索引等方法。