Select last row in MySQL

2019-01-02 14:51发布

How can I SELECT the last row in a MySQL table?

I'm INSERTing data and I need to retrieve a column value from the previous row.

There's an auto_increment in the table.

标签: mysql
9条回答
永恒的永恒
2楼-- · 2019-01-02 15:33

Keep in mind that tables in relational databases are just sets of rows. And sets in mathematics are unordered collections. There is no first or last row; no previous row or next row.

You'll have to sort your set of unordered rows by some field first, and then you are free the iterate through the resultset in the order you defined.

Since you have an auto incrementing field, I assume you want that to be the sorting field. In that case, you may want to do the following:

SELECT    *
FROM      your_table
ORDER BY  your_auto_increment_field DESC
LIMIT     1;

See how we're first sorting the set of unordered rows by the your_auto_increment_field (or whatever you have it called) in descending order. Then we limit the resultset to just the first row with LIMIT 1.

查看更多
时光乱了年华
3楼-- · 2019-01-02 15:40

You can combine two queries suggested by @spacepille into single query that looks like this:

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

It should work blazing fast, but on INNODB tables it's fraction of milisecond slower than ORDER+LIMIT.

查看更多
深知你不懂我心
4楼-- · 2019-01-02 15:42

If you want the most recently added one, add a timestamp and select ordered in reverse order by highest timestamp, limit 1. If you want to go by ID, sort by ID. If you want to use the one you JUST added, use mysql_insert_id.

查看更多
姐姐魅力值爆表
5楼-- · 2019-01-02 15:44

Make it simply use: PDO::lastInsertId

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

查看更多
余生无你
6楼-- · 2019-01-02 15:47

Almost every database table, there's an auto_increment column(generally id )

If you want the last of all the rows in the table,

SELECT columns FROM table ORDER BY id DESC LIMIT 1;

OR

You can combine two queries into single query that looks like this:

SELECT columns FROM table WHERE id=(SELECT MAX(id) FROM table);
查看更多
琉璃瓶的回忆
7楼-- · 2019-01-02 15:50
SELECT * FROM adds where id=(select max(id) from adds);

This query used to fetch the last record in your table.

查看更多
登录 后发表回答