Ralf Rapude: MySQL: Select mit Max funzt nicht

Hallo Forum,
ueber ein Select mochte ich den Inhalt des records mit der hoechsten id auslesen. Ich verstehe aber nicht, wieso dieses hier nicht funzt:

"SELECT * FROM table WHERE id=MAX(id)"

waehrend dieses hier:

"SELECT MAX(id) FROM table"

durchaus ein Ergebnis zurueckgibt (das mir aber ja nichts nuetzt, weil ich ja den Rest brauche.)
Jetzt koennte ich das Ergebnis ja in einer Variablen speichern und dann ein erneutes SELECT machen, aber das geht doch bestimmt auch einfacher, oder?

Kann mir jemand sagen, wie?

Vielen Dank und Gruss
Ralf

  1. Hi,

    "SELECT * FROM table WHERE id=MAX(id)"

    hier ermittelst Du das MAX(id) _jeder einzelnen Zeile_, was keinen Sinn ergibt. Normalerweise würde ich zu einem Subselect raten; da MySQL sowas aber nicht beherrscht: Sortieren und Limitieren ist angesagt.

    Übrigens: Was passiert, wenn es _mehrere_ Zeilen gibt, deren id dem Wert von MAX(id) entspricht? Ja, Du weißt dass es nicht vorkommt. Die Datenbank aber nicht.

    Cheatah

    1. Hallo Cheatah,

      Übrigens: Was passiert, wenn es _mehrere_ Zeilen gibt, deren id dem Wert von MAX(id) entspricht? Ja, Du weißt dass es nicht vorkommt. Die Datenbank aber nicht.

      Ich verstehe, wo das Problem liegt, aber gibt es wirklich keine Moeglichkeit ueber ein einfaches Select den letzten Datensatz der Datenbank auszulesen?

      Gruss
      Ralf

      1. Hi,

        Ich verstehe, wo das Problem liegt, aber gibt es wirklich keine Moeglichkeit ueber ein einfaches Select den letzten Datensatz der Datenbank auszulesen?

        den letzten? Das müsstest Du über eine Datums-Spalte regeln, die Du immer mit CURRDATE füllst; ansonsten sind die Datensätze unsortiert. Ja, trotz auto_increment.

        Was das Problem an sich betrifft, möchte ich mich kurz selbst zitieren:

        Sortieren und Limitieren ist angesagt.

        Cheatah

        1. Moin!

          Was das Problem an sich betrifft, möchte ich mich kurz selbst zitieren:

          Sortieren und Limitieren ist angesagt.

          Du meinst doch nicht etwa: Abwärts sortieren nach ID, und dann limitieren auf eine Ergebniszeile? Nein, das wäre zu offensichtlich, oder? ;)

          - Sven Rautenberg

          1. Hi,

            Du meinst doch nicht etwa: Abwärts sortieren nach ID, und dann limitieren auf eine Ergebniszeile?

            selbstverständlich nicht! Eigentlich meinte ich: _Auf_wärts sortieren nach ID, limitieren nach SELECT COUNT(*)/2, das ganze umgekehrt sortieren, dann wieder limitieren nach SELECT COUNT(*)/2, und so weiter, bis nur noch eine Zeile übrigbleibt. Ist doch logisch!

            Nein, das wäre zu offensichtlich, oder? ;)

            Hm, siedend heiß fällt mir gerade ein, dass MySQL keine Subselects kann... herrje, wie konnte ich nur solche Ratschläge geben! *g*

            Cheatah

            1. Hallo Cheatah, hallo Sven,
              Scheisse. Wie peinlich. Ist ja wirklich voellig trivial. Bin ich irgendwie nicht drauf gekommen und die Geschichte mit dem Subselect hat mich in endgueltige Verwirrung gestuerzt.

              Freut mich aber, dass ihr offensichtlich etwas Spass an der Sache hattet :o)

              Gruesse und Dank
              Ralf

              1. Hi,

                Scheisse. Wie peinlich. Ist ja wirklich voellig trivial.

                ich weiß nicht, ob man das berühmte Brett vor dem Kopf als peinlich bezeichnen sollte. Es ist einfach oft so, dass man nur mal jemanden braucht, der "neu" und unvoreingenommen auf das Problem schaut - jemand, der sich nicht in den gleichen Gedanken verrannt hat wie man selbst.

                Bin ich irgendwie nicht drauf gekommen und die Geschichte mit dem Subselect hat mich in endgueltige Verwirrung gestuerzt.

                Sorry :-)

                Freut mich aber, dass ihr offensichtlich etwas Spass an der Sache hattet :o)

                So hat jeder daraus profitiert ;-)

                Cheatah