2017-12-15 1 views
0

Wie kann ich die letzten zwei eingefügten IDs auswählen?MySQL die letzten zwei eingefügten IDs auswählen

Hier erkläre ich, wie ich diese verwenden könnte. Dies ist meine Frage:

INSERT INTO Table1 (FIELD1, FIELD2, FK_TABLE2, FIELD6) 
(SELECT FIELD1, FIELD2 
,(SELECT MAX(PK_Table2) 
    FROM Table2 
    ) 
,(FIELD4 + FIELD5) FROM Table1 WHERE FIELD3 = (
    (SELECT MAX(PK_Table2) 
     FROM Table2) - 1 
    )) 

Dies sollte fast alle Datensätze der letzten verknüpft Duplikat aber ein Datensatz von table2, für den letzten Datensatz von table2.

Das funktioniert jetzt, aber nur, weil ich noch keinen Datensatz gelöscht hatte.

Wenn ich den letzten Datensatz aus Tabelle2 lösche und einen anderen einfüge, generiert mein Generator einen neuen PK, der nicht der letzte + 1 ist.

zB: Die letzten zwei IDs sind: 18-19. I Löschen Sie 19 und fügen Sie einen anderen ein. Jetzt sind die letzten zwei IDs 18-20.
So wird Max(PK_Table2) 20 und Max(PK_Table2)-1 19 sein wird, aber ich brauche es 18

Antwort

2

Sie müssen Schritte sein:

  1. Holen Sie sich das max ID
  2. Holen Sie sich das Max-ID weniger dann, dass

Dies wäre:

WHERE FIELD3 = 
(
    SELECT MAX(PK_Table2) FROM Table2 
    WHERE PK_Table2 < (SELECT MAX(PK_Table2) FROM Table2) 
) 

Eine weitere Annäherung: Holen Sie sich die letzten zwei und dann die zweitletzte.

WHERE FIELD3 = 
(
    SELECT PK_Table2 
    FROM (SELECT PK_Table2 FROM Table2 ORDER BY PK_Table2 DESC LIMIT 2) x 
    ORDER BY PK_Table2 LIMIT 1 
) 
+0

Schön und einfach! Ich weiß nicht, warum ich nicht darüber nachgedacht habe. Danke –

Verwandte Themen