posts - 710,  comments - 81,  views - 260万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

1.一般数据表的id都是设置成auto_increment的,所以当插入一条记录后,可以使用下面的命令来获取最新插入记录的id值

1
select last_insert_id();

  

   注意:1. 必须是在使用Insert语句后,紧接着使用select last_insert_id()才有效,在没有使用过Insert语句的情况下,查询返回的结果为0;

            2.如果在同一条Insert语句插入多条记录,返回的结果是第一条记录对于的id,如

1
2
3
4
5
6
7
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语句如下:

1
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",指的是表的名字,也要使用双引号。

posted on   itprobie-菜鸟程序员  阅读(11429)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2016-06-06 C#实现RSA加密和解密详解
2016-06-06 C#开发中常用加密解密方法解析
2014-06-06 如何开始学习ADF和Jdeveroper 11g
点击右上角即可分享
微信分享提示