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

MySQL限制查询无法获取所有数据,mysql,sql-order-by,limit,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

我有一个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

下表内容如下:

我想得到两个日期之间的记录,在每个结果集中我想要两条记录。执行以下查询,其结果集显示在所附图像中:

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;
从test.VIEW\u LOG\u TRIGGER\u TEMP中选择*,其中日期>='2018-02-11 00:00:00'和日期<'2018-02-12 00:00:00'限制2;

从test.VIEW\u LOG\u TRIGGER\u TEMP中选择*,其中日期>='2018-02-11 00:00:00'和日期<'2018-02-12 00:00:00'限制2,2;

从test.VIEW\u LOG\u TRIGGER\u TEMP中选择*,其中日期>='2018-02-11 00:00:00'和日期<'2018-02-12 00:00:00'限制4,2;

如我们所见,ID为3的记录未被提取。预期的结果是应该从样本中提取所有记录。如果我在
DATE
上执行与
Order by DATE ASC
相同的查询,我将得到所需的结果。 是不是在每次提取中,我们都会得到一个新的结果集,其顺序是适用的?

问题是“限制4,2”和“限制2,2”,这意味着您不需要所有的结果

要进一步解释:

限制4,2意味着您只需要从第4个开始的2个结果

MYSQL网站对限制和订单优化的最好解释是“限制4,2”和“限制2,2”,这意味着你不想要所有的结果

要进一步解释:

限制4,2意味着您只需要从第4个开始的2个结果


MYSQL网站对限额和订单优化的最好解释是,您使用了日期范围查询,您的ID是主键。您将根据递增的日期和时间顺序获得输出

因此,如果不使用限制,则顺序将按此顺序

Id
4
2
1
5
3
查询1限制2->您将获得
ID的4和2

查询2限制2,2->这里的偏移量为2,因此它将跳过前两个结果
,即(4和2)
,并将打印
ID的1和5


对于查询3->尝试限制4,1,您将获得Id 3

您使用的日期范围查询,并且您的Id是主键。您将根据递增的日期和时间顺序获得输出

因此,如果不使用限制,则顺序将按此顺序

Id
4
2
1
5
3
查询1限制2->您将获得
ID的4和2

查询2限制2,2->这里的偏移量为2,因此它将跳过前两个结果
,即(4和2)
,并将打印
ID的1和5


对于查询3->Try Limit 4,1,您将获得Id 3

注意,没有排序依据的限制是一个相当无意义的概念注意,没有排序依据的限制是一个相当无意义的概念我的观点是,在三个具有不同限制的查询中,它应该获取Id 1到Id 5的所有结果,这是我无法做到的。不,因为限制我的观点是,在三个具有不同限制的查询中,它应该获取从ID 1到ID 5的所有结果,这是我无法做到的。不,因为您的限制
Id
4
2
1
5
3