Rufen Sie die ID des zuletzt eingefügten Datensatzes in MySQL ab

Mehvish Ashiq 20 Juni 2023
  1. Holen Sie sich die ID des zuletzt eingefügten Datensatzes in der MySQL-Tabelle
  2. Verwenden Sie die Funktion LAST_INSERT_ID(), um die ID der zuletzt eingefügten Zeile in MySQL abzurufen
  3. Verwenden Sie die Funktion MAX(), um die ID der zuletzt eingefügten Zeile in MySQL abzurufen
  4. Verwenden Sie ORDER BY DESC, um die ID der zuletzt eingefügten Zeile in MySQL zu erhalten
Rufen Sie die ID des zuletzt eingefügten Datensatzes in MySQL ab

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.

  1. Verwenden Sie die Funktion LAST_INSERT_ID().
  2. Verwenden Sie die Funktion max().
  3. 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)
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

Verwandter Artikel - MySQL Table