gpt4 book ai didi

php - LIMIT 在日期时间比较中不起作用

转载 作者:行者123 更新时间:2023-11-29 12:29:04 25 4
gpt4 key购买 nike

当我执行准备好的语句时:

select SQL_CALC_FOUND_ROWS * from entries where ( START_DATE >= ? ) limit 300, 400

其中 START_DATE 的类型为 datetime我得到的结果与运行时的结果相同

select SQL_CALC_FOUND_ROWS * from entries where ( START_DATE >= ? ) limit 0, 400

这意味着我在第一个查询中显示了 400 个结果,而不是 100 个!这是为什么?

额外信息:

我使用SQL_CALC_FOUND_ROWS,因为我随后执行查询select FOUND_ROWS(),因为我需要总结果计数才能应用分页功能以显示 100 个条目每页。像上面这样的一个查询总共返回大约 35k 个结果(350 页)。

对于同一表中的其他查询,情况并非如此。例如,查询:

select SQL_CALC_FOUND_ROWS * from entries where ( NATIONALITY = ? ) limit 100, 200

仅成功返回 100 个结果。对于其他列也是如此。只有 datetime 类型似乎有问题。

最佳答案

我的观点 - 你正在混淆你的想法并误解了 LIMIT 语法思想。

根据文档:

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15

因为正如 @zerkms 在评论中注意到的:

LIMIT [OFFSET, ] NUMBER

这意味着在你的情况下:

limit 300, 400

必须在 300 行之后返回最多 400 行:-)

如果你想知道为什么

select SQL_CALC_FOUND_ROWS * from entries where ( NATIONALITY = ? ) limit 100, 200

仅成功返回 100 个结果。

我唯一的猜测是没有任何 LIMIT 的 SQL 结果仅包含 200 行 (where ( NATIONALITY = ? ))

所以没有什么魔力,但从你的问题来看,你期望的 LIMIT 100,200 对你来说意味着“从结果中返回第 100 行和第 200 行之间的行” - 但这不是如何限制有效

关于php - LIMIT 在日期时间比较中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27875883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com