我有问题。我的查询在下面给出
"SELECT
mail
FROM
table2
INNER JOIN
table1 ON table2.wid = table1.id
WHERE
table1.time_stamp >= DATE_SUB(NOW(),INTERVAL 10 MINUTE)
AND
table1.status<>200
GROUP BY
table1.Id
ORDER BY
table1.time_stamp ASC
LIMIT 2"
我认为大多数人都有使用此查询的目的。我一次只需要获取2个项目来发送电子邮件(但是当出现下面提到的问题时,查询将不会向一个用户发送邮件) 。
我的问题是当3行具有相同的time_stamp值时,它会打印从前一个开始的前两个,但它从不提取第三个。我不想错过电子邮件通知中的任何用户。 如何解决此问题?
答案 0 :(得分:0)
您已在查询结果中提到LIMIT
为2.删除它以获取所有结果或将其更改为3.
我更改了SELECT
以添加更多列,以便在运行时轻松检查结果。
SELECT table1.Id, table1.time_stamp, mail
FROM table2 INNER JOIN table1 ON table2.wid = table1.id
WHERE
table1.time_stamp >= DATE_SUB(NOW(),INTERVAL 10 MINUTE)
AND table1.status<>200
GROUP BY table1.Id
ORDER BY table1.time_stamp ASC
LIMIT 3
答案 1 :(得分:0)
听起来你想分批做这些。您可以use OFFSET
控制结果中的开始位置:
SELECT
mail
FROM
table2
INNER JOIN
table1 ON table2.wid = table1.id
WHERE
table1.time_stamp >= DATE_SUB(NOW(),INTERVAL 10 MINUTE)
AND
table1.status<>200
GROUP BY
table1.Id
ORDER BY
table1.time_stamp ASC
LIMIT 2
OFFSET 2
例如,这将检索第二组两行。如果以编程方式设置偏移值,则可以使用它来遍历整个结果集,同时一次只检索两个。
我相信MySQL也仅通过LIMIT
以LIMIT <offset>, <limit>
的形式支持这一点。