2

我创建了一个至少包含 100 行的表。当我想检索一个元素时,我在下面执行以下代码。这将返回 id 介于 11 和 28 之间的项目。我的目标是能够回显最后一个项目,即 28。如何在 mysql 上实现这一点?

SELECT names
FROM item_list
WHERE id >= 10 
LIMIT 18
4

3 回答 3

7

您的原始查询实际上将返回第 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

于 2013-06-04T14:30:32.573 回答
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% 清楚——但希望这些示例能够引导您找到正确的文档!

于 2013-06-04T14:32:11.863 回答
0

你可以在mysql中使用order by with limit。

select * from table_name order by id desc limit 0,1

这里 id 是自动增量值。

于 2013-06-04T14:59:28.900 回答