我创建了一个至少包含100行的表。当我想要检索元素时,我在下面执行以下代码。这将返回id介于11和28之间的项目。我的目标是能够回显最后一项是28。如何在mysql上实现这一点?
SELECT names
FROM item_list
WHERE id >= 10
LIMIT 18
答案 0 :(得分:7)
您的原始查询实际上会返回第10行到第27行。
| ID | ------ | 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
。
答案 1 :(得分:2)
这取决于这是否真的是你想要做的,但这些选项可能很接近:
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%清晰 - 但希望这些示例能够引导您找到正确的文档部分!
答案 2 :(得分:0)
你可以在mysql中使用order by limit。
通过id desc limit 0,1
从table_name顺序中选择*此处id是自动增量值。