Neuestes Datenset einer Tabelle

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Neuestes Datenset einer Tabelle

    Wie kann ich das neueste Datenset einer Tabelle auslesen? Ich hab ein Auto-Incrementfeld namens 'id'. Bei

    SELECT * FROM TABELLE WHERE id=MAX(id)

    hab ich die Befürchtung dass er für das MAX() die ganze Tabelle durchsuchen muss, und die performance dahinschwindet. LAST_INSERT_ID() klingt so als sei es genau das was ich suche, aber die erklärung dazu im manual sagt
    The last ID that was generated is maintained in the server on a per-connection basis. This means the value the function returns to a given client is the most recent AUTO_INCREMENT value generated by that client.
    Heißt das etwa dass die funktion nur den höchsten auto_increment_wert zurück gibt den der client der es abfragt verursacht hat? Was für einen sinn ergibt das?

    Wie auch immer, hier nochmal die Frage: Wie kann ich aus einer Tabelle den Datensatz mit dem höchsten aute_increment-Wert (in meinem Fall das feld ID) abfragen?

  • #2
    ORDER BY id DESC LIMIT 1
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Dafür müsste ich die ganze Tabelle auslesen... keine gute Lösung, da nehm ich schon lieber MAX(). Gibt es denn keine sinnvolle Möglichkeit?

      Kommentar


      • #4
        ach und bei Max liest Du nicht die Tabelle?
        Naja Dein
        SELECT * FROM TABELLE WHERE id=MAX(id)
        Wird Dir nichts bringen ausser einer Fehlermeldung.
        Happies Lösung ist die einfachste und beste.

        Von wievielen Datensätze in Deiner Tabelle redest Du denn?
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Original geschrieben von MelloPie
          Wird Dir nichts bringen ausser einer Fehlermeldung.
          man hat ja noch HAVING im ärmel ...
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            wenn man = ich is dann ja
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                1.) Wie kommst du darauf dass
                SELECT * FROM TABELLE WHERE id=MAX(id)
                nicht funktioniert und warum ist
                ORDER BY id DESC LIMIT 1
                besser?

                2.) Weis denn nieman was über LAST_INSERT_ID()?

                Kommentar


                • #9
                  zu LAST_INSERT_ID():

                  warum probierst du das nicht einfach mal aus ...?
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Das manual besagte ja
                    The last ID that was generated is maintained in the server on a per-connection basis. This means the value the function returns to a given client is the most recent AUTO_INCREMENT value generated by that client.
                    Meine einzige Angst bezüglich LAST_INSERT_ID() ist, dass es nur die letzte ID zurück gibt, die von dem Client eingetragen wurde, der LAST_INSERT_ID() aufruft. Um das vernünftig auszutesten bräuchte ich wohl mehrere Clients die gleichzeitig auf die Datenbank zugreifen.

                    Ist auch egal, nach ein wenig Recherche und Konsultierung Anderorts hab ich mich zu mrhappiness' Lösung durchgerungen.

                    Kommentar


                    • #11
                      Ach ja, und wen LAST_INSERT_ID() trotzdem interessiert, hier die Antwort die ich erhalten hab:
                      Mit dieser Funktion lässt sich abfragen, unter welcher id der _zuletzt_ per INSERT eingefügte Datensatz gespeichert wurde, etwa um gleich anschließend nochmal lesend drauf zugreifen zu können. Das muss nicht zwangsläufig die höchste vergebene id sein....

                      Kommentar


                      • #12
                        dein last_insert_id gibt Dir nur die letzte ID vom client zurück nicht im allgemeinen.
                        warum where id=max(ID) nicht funktioniert? probiers doch mal aus
                        Beantworte nie Threads mit mehr als 15 followups...
                        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                        Kommentar

                        Lädt...
                        X