Rufen Sie die ID des zuletzt eingefügten Datensatzes in MySQL ab
-
Holen Sie sich die
ID
des zuletzt eingefügten Datensatzes in der MySQL-Tabelle -
Verwenden Sie die Funktion
LAST_INSERT_ID()
, um dieID
der zuletzt eingefügten Zeile in MySQL abzurufen -
Verwenden Sie die Funktion
MAX()
, um dieID
der zuletzt eingefügten Zeile in MySQL abzurufen -
Verwenden Sie
ORDER BY DESC
, um dieID
der zuletzt eingefügten Zeile in MySQL zu erhalten
Dieses Tutorial erklärt drei Ansätze namens LAST_INSERT_ID()
, MAX()
und ORDER BY DESC
mit Codebeispielen und zeigt, wie man die ID
des zuletzt eingefügten Datensatzes in MySQL erhält.
Holen Sie sich die ID
des zuletzt eingefügten Datensatzes in der MySQL-Tabelle
Es gibt 3 Möglichkeiten, die wir verwenden können, um eine ID
des zuletzt eingefügten Datensatzes in der MySQL-Tabelle zu erhalten. Alle diese sind unten aufgeführt, und die Tabelle muss ein AUTO_INCREMENT
-Feld haben, um einen der folgenden Ansätze zu verwenden.
- Verwenden Sie die Funktion
LAST_INSERT_ID()
. - Verwenden Sie die Funktion
max()
. - Verwenden Sie die
ORDER BY DESC
-Klausel.
Verwenden Sie die Funktion LAST_INSERT_ID()
, um die ID
der zuletzt eingefügten Zeile in MySQL abzurufen
Die Funktion LAST INSERT ID()
kann verwendet werden, um die ID
des zuletzt eingefügten oder aktualisierten Datensatzes (Zeile) zu erhalten, wenn der Befehl INSERT
oder UPDATE
für eine Tabelle mit dem Feld AUTO INCREMENT
verwendet wird.
Lassen Sie es uns verstehen, indem wir die Tabelle tb_courses
vorbereiten und mit Beispieldaten füllen.
Beispielabfrage:
# 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;
Ausgang:
+----+----------------------+
| ID | COURSE_NAME |
+----+----------------------+
| 1 | Introduction to Java |
| 2 | Python for Beginners |
| 3 | Database Systems |
+----+----------------------+
3 rows in set (0.00 sec)
Führen Sie nun den folgenden Befehl aus, um die ID
des zuletzt eingefügten Datensatzes abzurufen.
Beispielabfrage:
SELECT LAST_INSERT_ID();
Ausgang:
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 3 |
+------------------+
1 row in set (0.00 sec)
Es liefert den korrekten Wert zurück, 3
ist die zuletzt eingefügte ID
. Nun fügen
wir weitere Daten ein und fügen mehrere Zeilen ein.
Beispielabfrage:
# insert data
INSERT INTO tb_courses (COURSE_NAME)
VALUES
('Introduction to Machine Learning'),
('Deep Learning'),
('Statistics');
# display data
SELECT * FROM tb_courses;
Ausgang:
+----+----------------------------------+
| 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)
Führen Sie die folgende Abfrage aus, um die zuletzt eingefügte ID
zu erhalten.
Beispielabfrage:
SELECT LAST_INSERT_ID();
Ausgang:
+------------------+
| LAST_INSERT_ID() |
+------------------+
| 4 |
+------------------+
1 row in set (0.00 sec)
Wir können die Ausgabe sehen, in der die Methode LAST_INSERT_ID()
einen generierten Wert des ersten Datensatzes zurückgibt, nicht des letzten Datensatzes. Die zuletzt eingefügte ID
erhalten wir mit LAST_INSERT_ID()
nur, wenn wir eine einzelne INSERT
-Anweisung für eine Zeile verwenden.
Wenn wir eine einzelne INSERT
-Anweisung für mehr als eine Zeile verwenden, gibt die Funktion LAST_INSERT_ID()
den generierten Wert nur für den ersten eingefügten Datensatz aus (siehe die oben angegebene Ausgabe). Denken Sie daran, dass die generierte ID
auf einer pro Verbindung
-Basis in einem Server verwaltet wird.
Der erste AUTO INCREMENT
-Wert, der für die jüngste Anweisung generiert wurde, die das AUTO INCREMENT
-Feld von diesem Client beeinflusst, wird von der LAST INSERT ID()
-Methode an diesen Client zurückgegeben. Der zurückgegebene Wert von LAST_INSERT_ID()
gilt also pro Benutzer und wird nicht von anderen auf dem Server ausgeführten Anweisungen anderer Benutzer beeinflusst.
Verwenden Sie die Funktion MAX()
, um die ID
der zuletzt eingefügten Zeile in MySQL abzurufen
Wir können die Funktion MAX()
verwenden, um die zuletzt eingefügte ID
der Zeile zu erhalten. Es spielt keine Rolle, ob wir für diese Methode eine einzelne INSERT
-Anweisung für eine oder mehrere Zeilen verwenden.
Zuerst verwenden wir die Funktion MAX()
, um die Tabelle tb_courses
mit der einzigen INSERT
-Anweisung einer Zeile zu füllen.
Beispielabfrage:
INSERT INTO tb_courses (COURSE_NAME) VALUES ('Data Science');
SELECT MAX( ID ) FROM tb_courses;
Ausgang:
+-----------+
| MAX( ID ) |
+-----------+
| 7 |
+-----------+
1 row in set (0.02 sec)
Es hat den korrekten Wert 7
zurückgegeben. Wir verwenden eine einzelne INSERT
-Anweisung für mehrere Zeilen und dann die MAX()
-Funktion, um die zuletzt eingefügte ID
abzurufen.
Beispielabfrage:
INSERT INTO tb_courses (COURSE_NAME)
VALUES
('Introduction to Recommender Systems'),
('Data Structures'),
('Analysis of Algorithms');
SELECT MAX( ID ) FROM tb_courses;
Ausgang:
+-----------+
| MAX( ID ) |
+-----------+
| 10 |
+-----------+
1 row in set (0.00 sec)
Es gibt den korrekten Wert zurück, nämlich 10
.
Verwenden Sie ORDER BY DESC
, um die ID
der zuletzt eingefügten Zeile in MySQL zu erhalten
Die Klausel ORDER BY DESC
kann auch verwendet werden, um Daten in absteigender Reihenfolge zu sortieren, indem das Feld ID
verwendet wird und die ID
aus der ersten Zeile (der letzten Zeile vor dem Sortieren) abgerufen wird.
Beispielabfrage:
SELECT ID FROM tb_courses ORDER BY ID DESC LIMIT 1;
Ausgang:
+----+
| ID |
+----+
| 10 |
+----+
1 row in set (0.05 sec)