1.一般數據表的id都是設置成auto_increment的,所以當插入一條記錄后,可以使用下面的命令來獲取最新插入記錄的id值
select last_insert_id();
注意:1. 必須是在使用Insert語句后,緊接着使用select last_insert_id()才有效,在沒有使用過Insert語句的情況下,查詢返回的結果為0;
2.如果在同一條Insert語句插入多條記錄,返回的結果是第一條記錄對於的id,如
insert into school.student (name, age) values ('s1', 18), ('s2', 18), ('s3', 28), ('s4', 19), ('s5', 18);
返回的結果是s1對於的id號。
2. 為什么不直接使用 select max(id) from tableName;
因為:如果手動刪除了最新的數據,使用 max(id)查詢的結果是當前剩下數據中最大的記錄,
而新插入數據則不一定從這個數字開始計數
3. 所以為了准確的獲取下一條插入記錄的id,應該查詢的是auto_increment, 對應的SQL語句如下:
SELECT auto_increment FROM information_schema.tables where table_schema="dbName" and table_name="tableName";
注意:auto_increment 可以通過 show table status where `name`='tableName' 查詢得到,所以相當於一個字段了;
auto_increment返回的是下一條插入記錄的id值,而不是當前的最大id值
information_schema.tables照寫即可,
table_schema="dbName",指的是數據庫的名字,注意要使用雙引號,
table_name="tableName",指的是表的名字,也要使用雙引號。