MySQL 限制查询无法获取所有数据

标签 mysql sql-order-by limit

我有一个 MySQL MyISAM 表,其结构如下。

CREATE TABLE `VIEW_LOG_TRIGGER_TEMP` (
 `ID` mediumint(9) NOT NULL AUTO_INCREMENT,
 `VIEWER` int(10) unsigned NOT NULL DEFAULT '0',
 `VIEWED` int(10) unsigned NOT NULL DEFAULT '0',
 `DATE` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 `SEEN` char(1) NOT NULL,
 PRIMARY KEY (`ID`),
 UNIQUE KEY `VIEWED` (`VIEWED`,`VIEWER`),
 KEY `VIEWER` (`VIEWER`),
 KEY `DATE` (`DATE`)
) ENGINE=MyISAM

enter image description here

表格内容如下:

enter image description here

我想获取两个日期之间的记录,并且在每个结果集中我想要两条记录。执行以下查询,其结果集如附图所示:

SELECT * FROM test.VIEW_LOG_TRIGGER_TEMP WHERE DATE >=  '2018-02-11 00:00:00' AND DATE <  '2018-02-12 00:00:00' LIMIT 2;

enter image description here

SELECT * FROM test.VIEW_LOG_TRIGGER_TEMP WHERE DATE >=  '2018-02-11 00:00:00' AND DATE <  '2018-02-12 00:00:00' LIMIT 2,2;

enter image description here

SELECT * FROM test.VIEW_LOG_TRIGGER_TEMP WHERE DATE >=  '2018-02-11 00:00:00' AND DATE <  '2018-02-12 00:00:00' LIMIT 4,2;

enter image description here

正如我们所见,ID 为 3 的记录未被提取。预期的结果是应该获取 ample 中的所有记录。如果我在 DATE 上使用 Order by 条件执行与 ORDER BY DATE ASC 相同的查询,我会得到所需的结果。 是不是在每次抓取中我们都会得到一个新的结果集,其上应用了顺序?

最佳答案

问题是“LIMIT 4,2”和“LIMIT 2,2”,这意味着你不想要所有的结果

更多解释:

LIMIT 4,2 表示从第 4 个开始只需要 2 个结果

以及来自MYSQL网站的LIMIT和ORDER优化的最佳解释limit optimization

关于MySQL 限制查询无法获取所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48861796/

相关文章:

c# - Linq order by 没有订购任何东西

MySQL 限制 LEFT JOIN 加入后的子查询

mysql - 需要根据日期提取最后 x 行数

mysql - 在 where 子句 : invalid use of group function 中使用计数

mysql - 如何使用node-red编写两个mysql数据库之间的同步函数

mysql - 以特定格式显示MYSQL结果

mysql - 选择顺序记录

nhibernate - NHibernate。按功能排序

mysql - 使用带 ORDER 子句的 AES_DECRYPT 在 MySQL 中返回的 BLOB 数据

mysql - 如何从 MySQL 中的第 x 行获取所有行