mysql - 如何在mysql日期范围中获取X个均匀分布的行?

标签 mysql datetime

我正在使用一个大型 Mysql 表(300M 记录),主键是日期时间值。 如何有效地获取在指定日期时间范围内均匀分布的特定行数?

例如:对于日期时间范围内的 1000 行和需要的 200 个数字行,我希望每 5 行结束一次。

最佳答案

这样的东西应该可以工作,您甚至可以在没有子查询的情况下完成它,但是这样更安全,更可靠。

SET @i := -1;

SELECT *, @i := @i + 1 AS rowNum
(
SELECT *
FROM yourTable
WHERE theField BETWEEN [begin] AND [end]
ORDER BY theField
) AS subQ
HAVING rowNum % 5 == 0
;

不过,这并不能真正保证 1000 中的 200 行,该范围内可能有许多行不能被 5 整除。

关于mysql - 如何在mysql日期范围中获取X个均匀分布的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32061429/

相关文章:

MySQL触发器: Update when reaching a certain datetime

python - 尝试编写时间增量函数

mysql - 查找列值至少出现两次的行?

php - 从 API 获取数据时诊断瓶颈

php - 使用PDO连接方式

MYSQL 查询查找紧邻的下一个日期时间

php - CodeIgniter 无法回显日期时间结果

MySql语句根据中间表中的列进行选择

mysql - mysql workbench 8.0中将列中每个单词大写的函数

c# - 将 datetime2 数据类型转换为 datetime 数据类型会导致值超出范围