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
如果您想要添加最近添加的时间戳,请添加时间戳,然后按最高时间戳顺序按相反顺序sorting,限制为1.如果要按IDsorting,请按IDsorting。 如果你想使用你刚刚添加的那个,使用mysql_insert_id
。
SELECT * FROM adds where id=(select max(id) from adds);
此查询用于获取表中的最后一条logging。