获取MySQL最新插入记录的ID
本教程通过代码示例解释了名为 LAST_INSERT_ID()
、MAX()
和 ORDER BY DESC
的三种方法,并演示了如何在 MySQL 中获取最新插入记录的 ID。
获取MySQL表中最新插入记录的ID
我们可以使用 3 种方法来获取 MySQL 表中最新插入记录的 ID。 所有这些都列在下面,表必须有一个 AUTO_INCREMENT 字段才能使用以下任何方法。
- 使用 LAST_INSERT_ID() 函数。
- 使用 max() 函数。
- 使用 ORDER BY DESC 子句。
使用 LAST_INSERT_ID() 函数获取 MySQL 中最后插入行的 ID
在具有 AUTO INCREMENT
字段的表上使用 INSERT 或 UPDATE 命令时,LAST INSERT ID() 函数可用于获取最后插入或更新的记录(行)的 ID。
通过准备 tb_courses 表并用示例数据填充它,让我们了解它。
示例查询:
# create a table
CREATE TABLE tb_courses (
ID INT NOT NULL AUTO_INCREMENT,
COURSE_NAME VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
# insert data
INSERT INTO tb_courses (COURSE_NAME) VALUES ('Introduction to Java');
INSERT INTO tb_courses (COURSE_NAME) VALUES ('Python for Beginners');
INSERT INTO tb_courses (COURSE_NAME) VALUES('Database Systems');
# display data
SELECT * FROM tb_courses;
输出:
+----+----------------------+
| ID | COURSE_NAME |
+----+----------------------+
| 1 | Introduction to Java |
| 2 | Python for Beginners |
| 3 | Database Systems |
+----+----------------------+
3 rows in set (0.00 sec)
现在,执行以下命令来检索最新插入记录的 ID。
示例查询:
SELECT LAST_INSERT_ID();
输出:
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 3 |
+------------------+
1 row in set (0.00 sec)
它返回正确的值,3 是最后插入的 ID。 现在,我们插入更多数据并插入多行。
示例查询:
# insert data
INSERT INTO tb_courses (COURSE_NAME)
VALUES
('Introduction to Machine Learning'),
('Deep Learning'),
('Statistics');
# display data
SELECT * FROM tb_courses;
输出:
+----+----------------------------------+
| ID | COURSE_NAME |
+----+----------------------------------+
| 1 | Introduction to Java |
| 2 | Python for Beginners |
| 3 | Database Systems |
| 4 | Introduction to Machine Learning | <======================
| 5 | Deep Learning |
| 6 | Statistics |
+----+----------------------------------+
6 rows in set (0.00 sec)
运行以下查询以获取最新插入的 ID。
示例查询:
SELECT LAST_INSERT_ID();
输出:
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 4 |
+------------------+
1 row in set (0.00 sec)
我们可以看到输出,其中 LAST_INSERT_ID()
方法返回第一条记录的生成值,而不是最后一条记录。 如果我们对一行使用单个 INSERT 语句,我们只能使用 LAST_INSERT_ID() 获取最后插入的 ID。
如果我们对多行使用单个 INSERT 语句,LAST_INSERT_ID()
函数将只输出第一个插入记录的生成值(参见上面给出的输出)。 请记住,生成的 ID 在服务器中基于每个连接进行维护。
为影响该客户端的 AUTO INCREMENT 字段的最近语句生成的第一个 AUTO INCREMENT 值由 LAST INSERT ID()
方法返回给该客户端。 因此,LAST_INSERT_ID() 的返回值是针对每个用户的,不受其他用户在服务器上执行的其他语句的影响。
使用 MAX() 函数获取 MySQL 中最后插入行的 ID
我们可以使用 MAX()
函数来获取该行最后插入的 ID。 对于此方法,我们是否对一行或多行使用单个 INSERT 语句并不重要。
首先,我们使用 MAX()
函数使用一行的单个 INSERT 语句填充 tb_courses 表。
示例查询:
INSERT INTO tb_courses (COURSE_NAME) VALUES ('Data Science');
SELECT MAX( ID ) FROM tb_courses;
输出:
+-----------+
| MAX( ID ) |
+-----------+
| 7 |
+-----------+
1 row in set (0.02 sec)
它返回值 7,这是正确的。 我们对多行使用单个 INSERT 语句,然后使用 MAX() 函数检索最后插入的 ID。
示例查询:
INSERT INTO tb_courses (COURSE_NAME)
VALUES
('Introduction to Recommender Systems'),
('Data Structures'),
('Analysis of Algorithms');
SELECT MAX( ID ) FROM tb_courses;
输出:
+-----------+
| MAX( ID ) |
+-----------+
| 10 |
+-----------+
1 row in set (0.00 sec)
它返回正确的值,即 10。
使用 ORDER BY DESC 获取 MySQL 中最后插入行的 ID
ORDER BY DESC 子句还可用于使用 ID 字段按降序对数据进行排序,并从第一行(排序前的最后一行)获取 ID。
示例查询:
SELECT ID FROM tb_courses ORDER BY ID DESC LIMIT 1;
输出:
+----+
| ID |
+----+
| 10 |
+----+
1 row in set (0.05 sec)
相关文章
如何在 MySQL 中声明和使用变量
发布时间:2024/03/26 浏览次数:115 分类:MySQL
-
当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。
在 MySQL 中使用 Mysqladmin 刷新主机解除阻塞
发布时间:2024/03/26 浏览次数:82 分类:MySQL
-
你将了解阻止主机的原因。此外,通过使用 phpMyAdmin 和命令提示符刷新主机缓存来解除阻塞的不同方法和效果。