mysql - 即使未找到该行,如何在搜索特定数量的行后完成我的 MySQL 提取?

标签 mysql

我有一个超过 100k 行的 MySQL 数据库,所以我需要进行搜索以仅获取最后 1000 行,因此如果在最后 1000 行中未找到,则获取结束(即使未找到)

例子:如果我的 table 是这样的

id   name
1     AL
2     BL
...
1000  P12
1001  P15

然后我像这样获取:SELECT * FROM myTable WHERE name = 'AL' ONLY LAST 1000 ROWS ORDER BY id DESC(因为我不知道该用什么,所以我发明了 ONLY最后 1000 行)

这应该返回空,因为我希望我的查询只获取最后 1000 行的信息,而不是指定的第 1001 行。

使用 LIMIT 字段不起作用,因为它不会在未找到时限制 FOUND ROWS。

有没有办法在 MySQL 中实现这个? 谢谢!

最佳答案

如评论中所述,您可以使用 OFFSET 获取最后 1000 条记录的 id,然后使用 SELECT 记录id 大于该记录的 id

像这样:

SELECT name 
FROM myTable 
WHERE id > (SELECT id FROM myTable ORDER BY id DESC LIMIT 1 OFFSET 1000)
AND name = 'AL'

关于mysql - 即使未找到该行,如何在搜索特定数量的行后完成我的 MySQL 提取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47456621/

相关文章:

php echo exit() 和可选字段

php - 通过加入更新 Codeigniter 事件记录

mysql - SQL - 主键、聚集索引、自动增量

mysql - 在 SQL 查询中返回唯一项

mysql - 将整数转换为字符串 - rails - mysql

MySQL:SQL Server HierarchyId 数据类型的替代解决方案

mysql - 通过 TCP 连接到 MariaDB 返回套接字错误

php - 是否可以限制当前访问 af 文件的用户数量?

php - 在属于和不属于的 3 个表中选择 mysql 数据?

php - 如何将传入的电子邮件消息插入 mySQL 数据库?