php - 按时间戳选择 block 顺序并按 id 随机化

标签 php mysql sql codeigniter

我有一个包含超过 50 万行的庞大数据库,我想选择按时间戳排序的前 1000 个 ID,然后将结果打乱。 Php shuffle() 不知何故会占用大量内存或变慢。我现在想在 MySQL 数据库中尝试它。是否可以?有哪些选择?我还实现了一个limit和offset来实现分页,所以我想做的就是简而言之就是获取页面并对结果进行shuffle。

我如何在 SQL 中执行此操作,或者实际上我喜欢使用 Codeigniters 事件记录。

ID, | timestamp, | data...
--------------------------
 0  | 2014-00-.. | some data..
 1  | 1987-00-.. | .
 .  | 2004-00-.. | .
 .  | 1546-00-.. | .

最佳答案

SELECT * FROM (
   SELECT * FROM table ORDER BY timestamp LIMIT 1000
) as a ORDER BY RAND()

关于php - 按时间戳选择 block 顺序并按 id 随机化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23778155/

相关文章:

sql - Order By 条款似乎不起作用

JavaScript 文本旋转

php - 使用 Inner Join MySQL php 从 3 个表中获取数据

php - 如果未指定 mysql 链接,mysql 函数是否会打开一个新的 mysql 连接?

Mysql - 基于另一列值的单个列中的多个唯一集

sql - 雪花 SQL : concat values from multiple rows based on shared key

php - Javascript 等效于 PHP 的 list()

php - box/spout - 卡住电子表格的第一行( Pane )

php - 在php中将字符串转换为MySQL时间戳格式

mysql - 查询未使用我在多个列上的索引