【发布时间】:2010-11-12 03:37:34
【问题描述】:
我有一个结构如下的表:
ID |颜色
1 |红色
2 |蓝色
3 |黄色
8 |紫色
10|绿色
.
.
.
100|黄色
我希望能够获取前 5 行的 MAX ID 值。
例如,我想做这样的事情: 从表 LIMIT 5 中选择 MAX(ID)
希望这会返回值 10
但是,MySQL 一直返回 100...就像 MySQL 甚至没有看到 LIMIT 子句一样。
【问题讨论】:
我有一个结构如下的表:
1 |红色
2 |蓝色
3 |黄色
8 |紫色
10|绿色
.
.
.
100|黄色
我希望能够获取前 5 行的 MAX ID 值。
例如,我想做这样的事情: 从表 LIMIT 5 中选择 MAX(ID)
希望这会返回值 10
但是,MySQL 一直返回 100...就像 MySQL 甚至没有看到 LIMIT 子句一样。
【问题讨论】:
如果你有一个具有以下结构的表
ID | Color
1 | red
2 | blue
3 | yellow
8 | purple
10| green
.
.
.
100|yellow
前 5 个(AUTO_INCREMENT?)值的 MAX ID 值为 5。 顺便说一句,前 6 个值的 MAX ID 值为 6。所有值均为 100。 最好的问候。
【讨论】:
有比子选择更好的方法:
SELECT id FROM table LIMIT 4,1
获取一行但先跳过 4.. 如果这是 MyISAM 表,请添加“order by id”。
【讨论】:
听起来您想选择前 5 条记录(按 ID 排序),然后获取该组的最高值?如果是这样:
SELECT
MAX(ID)
FROM
(
SELECT ID
FROM YourTable
ORDER BY ID
LIMIT 5
) as T1
【讨论】:
SELECT ID
LIMIT 选择已排序的行并在 SQL 之外计算最大值一样慢。
使用子选择:
SELECT MAX(id) FROM (SELECT id FROM table LIMIT 5);
这可能不是完全有效的 SQL,但这应该可以让您大致了解一下。
【讨论】: