我创建了一个至少包含 100 行的表。当我想检索一个元素时,我在下面执行以下代码。这将返回 id 介于 11 和 28 之间的项目。我的目标是能够回显最后一个项目,即 28。如何在 mysql 上实现这一点?
SELECT names
FROM item_list
WHERE id >= 10
LIMIT 18
您的原始查询实际上将返回第 10 到 27 行。
| 身份证 | ------ | 10 | | 11 | | 12 | | 13 | | 14 | | 15 | | 16 | | 17 | | 18 | | 19 | | 20 | | 21 | | 22 | | 23 | | 24 | | 25 | | 26 | | 27 |
要获得第 28 行,您可以使用
WHERE id >= 10
LIMIT 18, 1
要不就
LIMIT 27, 1
该
LIMIT
子句可用于限制SELECT
语句返回的行数。SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15 SELECT * FROM tbl LIMIT 95,18446744073709551615; # Retrieves rows from the 96th row to the last
换句话说,
LIMIT row_count
等价于LIMIT 0, row_count
。
这取决于这是否真的是您想要做的,但这些选项可能很接近:
SELECT names FROM item_list WHERE id = 28
或者...
SELECT names FROM item_list WHERE id <= 28 ORDER BY id DESC LIMIT 1
甚至...
SELECT * FROM ( SELECT names FROM item_list WHERE id >= 10 LIMIT 18 ORDER BY id DESC ) LIMIT 1
一个更有趣的(比以前更干净,但更长):
SELECT names
FROM (
SELECT id, names
FROM item_list
WHERE id >= 10
ORDER BY id
LIMIT 18 ) subQ
ORDER BY id DESC
LIMIT 1
随着列表的变化,您/实际上/想要获得什么并不是 100% 清楚——但希望这些示例能够引导您找到正确的文档!
你可以在mysql中使用order by with limit。
select * from table_name order by id desc limit 0,1
这里 id 是自动增量值。