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