2016-08-03 3 views
-2

Der Versuch, eine Abfrage zu erstellen, die den neuesten Datensatz für den Benutzer abruft. Hier ist mein VersuchSchreiben einer Abfrage, die die letzte Zeile eines bestimmten Benutzers zurückgibt

"SELECT * 
FROM (
    SELECT * 
    FROM mytable 
    ORDER BY id 
    DESC LIMIT 1) 
WHERE userid = $userID"; 
+3

Überspringen Sie die Unterabfrage. – jarlh

+0

mit dieser Abfrage erhalten Sie den letzten Datensatz für alle Benutzer, und filtern Sie dann diesen einen Datensatz mit gewünschten Benutzer, das ist der Fehler. –

+0

Was ist mit deinem Versuch falsch? Fügen Sie den Fehler hinzu, den Sie erhalten. Es hängt mit dem Tabellenalias zusammen, den Sie in Ihrer abgeleiteten Tabelle nicht finden. und wie @jarlh sagte, Sie brauchen nicht wirklich die abgeleitete Tabelle zu verwenden – ughai

Antwort

2

Sie könnten auch:

Select * from table 
Where id = 
    (Select Max(Id) from table 
    where userid = $userID) 
0

oben Alle (1)

Select TOP(1) * FROM table ORDER BY id DESC 
+2

'TOP' ist für SQL Server. MySQL hat 'LIMIT'. (Und ANSI SQL hat 'FETCH FIRST'.) – jarlh

+0

Das ist richtig, ich habe Titel gelesen, die sql zeigen, wie auch immer Sie Recht haben –

0

Versuchen:

SELECT * 
    FROM mytable 
    WHERE userid = $userID 
    ORDER BY id DESC 
    LIMIT 1 
1

einfach überspringen Sie die Unterabfrage :

SELECT * 
FROM mytable 
WHERE userid = $userID 
ORDER BY id DESC 
LIMIT 1 
Verwandte Themen