MySQL:如何获取最后一条记录?

时间:2011-07-11 22:49:52

标签: mysql sql

说我有以下记录:

1, A
1, B
2, A
2, B
2, C
1, C

我想要12的最后一条记录,该记录应为1, C2, C。我如何查询?

如果我对号码进行了GROUP BY,我会得到1, A2, A

4 个答案:

答案 0 :(得分:3)

如果按''last'表示按字母顺序最大值,那么可能是这样:

select id, max(val)
from mytable
group by id

答案 1 :(得分:1)

如果没有某种索引或插入顺序,就无法得到你想要的东西; SQL查询是非确定性的。

答案 2 :(得分:1)

既然我们已经确定你的意思是“按时间顺序排列”,那么我可以创建一个合适的答案......

SQL没有年表概念。所以你必须自己记录插入顺序。最常见的是,您将添加一个自动增量字段,然后在ORDER BY子句中使用该字段以及LIMIT子句。

答案 3 :(得分:0)

如果它不是字母,那么你需要使用LIMIT,所以只需执行以下操作。

select @rownum:=@rownum+1 as naturalorder, * from foo, (SELECT @rownum:=0) nat order by naturalorder desc limit 1;

但警告说没有保证mysql对记录的顺序。所以你可能想要添加一个带有时间戳字段的额外字段或者一个auto_increment,它将具有您正在寻找的顺序,我认为。

如果它是按字母顺序排列的,那么诀窍是按代码降序排序,然后获得第一条记录。你可以将其限制为一个。

select num, code from thetable order by code DESC limit 1

如果您使用分组依据,则必须扫描整个表格。并且很难获得完整的记录。