it-swarm.com.de

MySQL - Wählen Sie die zuletzt eingefügte Zeile aus

Ich muss nur die letzte durch Bedingung angegebene Zeile auswählen, z.

SELECT ID from bugs WHERE user=Me

Ich muss nur die letzte vom Benutzer "Ich" eingegebene ID zurückgeben. Gibt es eine einfache Möglichkeit, dies zu tun? Vielen Dank.

25
Thomas

Es wäre am besten, eine TIMESTAMP -Spalte zu haben, die standardmäßig CURRENT_TIMESTAMP lautet. Dies ist das einzig wahre Vorhersageverhalten, das Sie hier finden können.

Das zweitbeste, was Sie tun können, ist ORDER BY ID DESC LIMIT 1 und hoffen, dass die neueste ID der größte Wert ist.

38
Matt

Sie können ORDER BY ID DESC verwenden, aber es ist viel schneller, wenn Sie so vorgehen:

SELECT * FROM bugs WHERE ID = (SELECT MAX(ID) FROM bugs WHERE user = 'me')

Wenn Sie einen großen Tisch haben, kann dies einen wesentlichen Unterschied ausmachen.

EDIT

Sie können sogar eine Variable setzen, wenn Sie sie mehrmals benötigen (oder wenn Sie denken, dass sie einfacher zu lesen ist).

SELECT @bug_id := MAX(ID) FROM bugs WHERE user = 'me';
SELECT * FROM bugs WHERE ID = @bug_id;
29
pmrotule
SELECT MAX(ID) from bugs WHERE user=Me
29
SiLent SoNG

Eine Möglichkeit, dies zu erreichen, besteht darin, Ihre Datensätze zu ordnen und auf 1 zu begrenzen. Wenn Sie beispielsweise die folgende Tabelle ('Daten') haben. 

    id | user | price
   -------------------
    1  |  me  | 40.23
    2  |  me  | 10.23

Versuchen Sie die folgende SQL-Abfrage

  select * from data where user='me' order by id desc limit 1
13
user1400718

Bei der Parallelität ist der letzte Datensatz möglicherweise nicht der gerade eingegebene Datensatz. Es ist möglicherweise besser, den neuesten Datensatz mit dem Primärschlüssel abzurufen.

Wenn es sich um ein Auto-Inkrement-Feld handelt, verwenden Sie SELECT LAST_INSERT_ID();, um die soeben erstellte ID abzurufen.

7
Wayne
SELECT * FROM `table_name` 
ORDER BY `table_name`.`column_name` DESC
LIMIT 1 
3
rommo roy

Gleich nach dem Ausführen von MySQL-Abfrage von PHP

schaff es vorbei 

$lastid=mysql_insert_id();

dadurch erhalten Sie den Alst-Auto-Inkrement-ID-Wert

0
pratik shourabh