selectMySQL中的最后一行

我如何SELECT MySQL表中的最后一行?

INSERT数据,我需要从前一行检索列值。

表中有一个auto_increment

是的,那里有一个auto_increment

如果你想要表中所有行的最后一行 ,那么MAX(id)就是正确的答案! :) 有点。

 SELECT fields FROM table ORDER BY id DESC LIMIT 1; 

请记住,关系数据库中的表只是一组行。 math中的集合是无序的集合。 没有第一行或最后一行; 没有前一行或下一行。

您必须首先按照某个字段对无序行进行sorting,然后按照您定义的顺序对结果集进行迭代。

既然你有一个自动递增的字段,我假设你希望这是sorting字段。 在这种情况下,您可能需要执行以下操作:

 SELECT * FROM your_table ORDER BY your_auto_increment_field DESC LIMIT 1; 

看看我们是如何首先按降序排列your_auto_increment_field (或者其他所谓的)的无序行集。 然后我们将结果集限制在LIMIT 1的第一行。

在有很多行的表上有两个查询可能更快…

 SELECT @last_id := MAX(id) FROM table; SELECT * FROM table WHERE id = @last_id; 

您可以将@spacepillebuild议的两个查询合并为单个查询,如下所示:

 SELECT * FROM `table_name` WHERE id=(SELECT MAX(id) FROM `table_name`); 

它应该快速工作,但是在INNODB表中它比ORDER + LIMIT慢了几分之一毫秒。

使它简单地使用: PDO::lastInsertId

http://php.net/manual/en/pdo.lastinsertid.php

如果您想要添加最近添加的时间戳,请添加时间戳,然后按最高时间戳顺序按相反顺序sorting,限制为1.如果要按IDsorting,请按IDsorting。 如果你想使用你刚刚添加的那个,使用mysql_insert_id

 SELECT * FROM adds where id=(select max(id) from adds); 

此查询用于获取表中的最后一条logging。