MySQL LIMIT umdrehen

jannicars

Erfahrenes Mitglied
Hallo,

Nun hab ich auch schon das nächste Problem/Frage:

Ich möchte das Limit sozusagen umdrehen für einen Chat.
Ich habe 100 Nachrichten gespeichert
SELECT * FROM chat ORDER BY id ASC LIMIT 50
Gibt er mir folgendes zurück:
Nachricht 1
...
Nachricht 50

Ich möchte aber, dass MySQL mir es so ausgibt:
Nachricht 50
...
Nachricht 100
Also das LIMIT sozusagen andersrum bei ASC.

Kann man dies schon gleich im Query einbauen oder muss ich dort auf PHP zurückgreifen zum umdrehen?
 
Möchtest du die letzten 50 Einträge haben oder die Einträge 50 bis 100, auch wenn es mehr als hundert Einträge gibt?
 
Ja wenn ich aber DESC mache und ein LIMIT reinhaue, zählt er das LIMIT von oben.
Wie kann ich das umdrehen?
 
Das gibt die letzten 50 Datensätz mit ASC sortiert nach id zurück
SQL:
SELECT *
FROM
    (
        SELECT *
        FROM mytable
        ORDER BY id DESC
        LIMIT 50
    ) AS d
ORDER BY id ASC
 
Zuletzt bearbeitet von einem Moderator:
Der Codebeispiel klappt super, wenn ich ihn aber jetzt mit meiner JOIN Abfrage verbinde, gibt's Probleme.

Query:
SELECT * FROM (SELECT c.id AS cid, c.user_id, c.content, u.id AS uid, u.name FROM chat c INNER JOIN user u ON c.user_id = u.id ORDER BY c.id DESC LIMIT 50) AS id ORDER BY id ASC

Fehler:
Unknown Column id in Order Clause

Beide Tabellen:

chat:
id,
user_id,
content
user:

Hat da jemand ne Idee?
 
Zuletzt bearbeitet:
Dann enthält deine Tabelle chat entweder keine Spalte mit dem Namen id oder du solltest vielleicht mal FROM chat AS c probieren.
 
Hab ich dir doch schon an einem anderen Ort geschrieben. Du hast 2 mal den Namen id und SQL weiss nun nicht welchen es für die äussere Sortierung nehmen soll.
Mache Aliase, ansonsten hast du immer Probleme.
Wie das mit den Aliasen aussehen soll, hab ich dir bereits in einem anderen Thread beantwortet.
 
Der Fehler bezieht sich auf die hintere ORDER Clausel.
Die JOIN Abfrage und die Andere Abfragen gehen auch getrennt,
Nur zusammen machen sie Probleme.
 

Neue Beiträge

Zurück