如何选择MySQL表中的最后一行?

我正在插入数据,我需要从前一行检索一个列值。

表中有一个auto_increment。


当前回答

简单地使用:PDO::lastInsertId

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

其他回答

如果您想要最近添加的一个,添加一个时间戳,并按最高时间戳的倒序选择,限制1。如果你想按ID排序,就按ID排序。如果您想使用刚才添加的,请使用mysql_insert_id。

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

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

SELECT * FROM table WHERE id = @last_id;

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

您必须首先根据某些字段对您的无序行集进行排序,然后才可以按照您定义的顺序对结果集进行迭代。

既然你有一个自动递增字段,我假设你想要它作为排序字段。在这种情况下,你可能需要做以下事情:

SELECT    *
FROM      your_table
ORDER BY  your_auto_increment_field DESC
LIMIT     1;

看看我们是如何首先根据your_auto_increment_field(或任何你叫它的名字)对无序行集进行降序排序的。然后我们将结果集限制为limit 1的第一行。

是的,这里有一个auto_increment

如果您想要的是表中所有行的最后一行,那么现在正是MAX(id)是正确答案的时候!一种:

SELECT fields FROM table ORDER BY id DESC LIMIT 1;

几乎每个数据库表都有一个auto_increment列(通常是id)

如果你想要表中的最后一行,

SELECT columns FROM table ORDER BY id DESC LIMIT 1;

OR

你可以将两个查询组合成一个查询,就像这样:

SELECT columns FROM table WHERE id=(SELECT MAX(id) FROM table);