MySQL 自增ID值 获取的方法
2017-05-27 14:47
399 查看
如何获取 MYSQL中某个表的自增ID字段的下一个值 ?
方法一:
例如:在zx_ofc.task_order表中task_id是自增字段。
它的下一个自增字段可以通过下面的语句获得
SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'zx_ofc' AND TABLE_NAME = 'task_order';
该数值其实就是下面SQL语句执行后输出的数值 + 1.
select max(zx_ofc.task_order.task_id) from zx_ofc.task_order;
方法二:
SHOW TABLE STATUS;
得出的结果里边对应表名记录中有个Auto_increment字段,里边有下一个自增ID的数值就是当前该表的最大自增ID。
如何返回插入数据后的那个自增ID字段的值?
方法:使用 last_insert_id() 函数。
SQL例子如下:
下面的这个表初始空的,执行下面的语句系列。
insert into thb_test(keyword1) VALUES("thb");
select last_insert_id();
//输出值为1
1
//意味最后一条SQL插入语句的自增ID是1
我们再来执行多条insert语句,看看结果如何。
insert into thb_test(keyword1) VALUES("bill");
insert into thb_test(keyword1) VALUES("bigtree");
select last_insert_id();
//输出数值为3,意味最后一条SQL插入语句的自增ID是3
3
上面例子说明 执行两个insert语句,last_insert_id()返回最后一个插入语句的结果。
mysql> select @@version;
+------------+
| @@version |
+------------+
| 5.5.24-log |
+------------+
1 row in set (0.17 sec)
我在 Mysql 5.5.24上验证过了:last_insert_id()返回最后一个插入语句的自增结果。
网络上的说法:
”如果一句INSERT插入多条,返回的是第一个ID” 需要解释下。
即如果用一条insert语句插入了多条语句,则该函数会返回第一个ID。
在下面的 MySQL 官方文档中,有下面的解释,注意下绿色背景的SQL语句
https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id
Database changed
mysql>
->
->
->
Query OK, 0 rows affected (0.09 sec)
mysql>
Query OK, 1 row affected (0.01 sec)
mysql>
+----+------+
| id | name |
+----+------+
| 1 | Bob |
+----+------+
1 row in set (0.01 sec)
mysql>
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 1 |
+------------------+
1 row in set (0.00 sec)
mysql>
->
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM t;
+----+------+
| id | name |
+----+------+
| 1 | Bob |
| 2 | Mary |
| 3 | Jane |
| 4 | Lisa |
+----+------+
4 rows in set (0.01 sec)
mysql>
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 2 |
+------------------+
1 row in set (0.00 sec)[/code]
方法一:
例如:在zx_ofc.task_order表中task_id是自增字段。
它的下一个自增字段可以通过下面的语句获得
SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'zx_ofc' AND TABLE_NAME = 'task_order';
该数值其实就是下面SQL语句执行后输出的数值 + 1.
select max(zx_ofc.task_order.task_id) from zx_ofc.task_order;
方法二:
SHOW TABLE STATUS;
得出的结果里边对应表名记录中有个Auto_increment字段,里边有下一个自增ID的数值就是当前该表的最大自增ID。
如何返回插入数据后的那个自增ID字段的值?
方法:使用 last_insert_id() 函数。
SQL例子如下:
下面的这个表初始空的,执行下面的语句系列。
insert into thb_test(keyword1) VALUES("thb");
select last_insert_id();
//输出值为1
1
//意味最后一条SQL插入语句的自增ID是1
我们再来执行多条insert语句,看看结果如何。
insert into thb_test(keyword1) VALUES("bill");
insert into thb_test(keyword1) VALUES("bigtree");
select last_insert_id();
//输出数值为3,意味最后一条SQL插入语句的自增ID是3
3
上面例子说明 执行两个insert语句,last_insert_id()返回最后一个插入语句的结果。
mysql> select @@version;
+------------+
| @@version |
+------------+
| 5.5.24-log |
+------------+
1 row in set (0.17 sec)
我在 Mysql 5.5.24上验证过了:last_insert_id()返回最后一个插入语句的自增结果。
网络上的说法:
”如果一句INSERT插入多条,返回的是第一个ID” 需要解释下。
即如果用一条insert语句插入了多条语句,则该函数会返回第一个ID。
在下面的 MySQL 官方文档中,有下面的解释,注意下绿色背景的SQL语句
https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id
mysql> [code]USE test;
Database changed
mysql>
CREATE TABLE t (
->
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
->
name VARCHAR(10) NOT NULL
->
);
Query OK, 0 rows affected (0.09 sec)
mysql>
INSERT INTO t VALUES (NULL, 'Bob');
Query OK, 1 row affected (0.01 sec)
mysql>
SELECT * FROM t;
+----+------+
| id | name |
+----+------+
| 1 | Bob |
+----+------+
1 row in set (0.01 sec)
mysql>
SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 1 |
+------------------+
1 row in set (0.00 sec)
mysql>
INSERT INTO t VALUES
->
(NULL, 'Mary'), (NULL, 'Jane'), (NULL, 'Lisa');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM t;
+----+------+
| id | name |
+----+------+
| 1 | Bob |
| 2 | Mary |
| 3 | Jane |
| 4 | Lisa |
+----+------+
4 rows in set (0.01 sec)
mysql>
SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 2 |
+------------------+
1 row in set (0.00 sec)[/code]
相关文章推荐
- MYSQL获取自增ID的四种方法
- Mysql中获取刚插入的自增长id的三种方法归纳
- mysql获取指定表当前自增id值(Auto_increment)方法
- mysql获取插入时自增ID值的方法
- mysql获取一个表中的下一个自增(id)值的方法
- MySQL获取自增ID的方法
- MYSQL获取自增ID的四种方法
- MYSQL获取自增ID的四种方法(转)
- MYSQL获取自增ID的四种方法
- MySql中获取自增id的方法
- mysql获取一个表中的下一个自增(id)值的方法
- mysql获取指定表当前自增id值(Auto_increment)方法
- 获取mysql 自增id 和mysql 下一个自增id的方法
- MYSQL获取自增ID的四种方法
- Java获取最后插入MySQL记录的自增ID值的3种方法
- MYSQL获取自增ID的四种方法
- 可遇不可求的Question之MYSQL获取自增ID的四种方法篇
- MYSQL获取自增ID的四种方法
- Mysql中获取新插入的自增id的三种方法
- MySQL获取自增主键ID的四种方法