2017-03-24 16 views
1

Ich habe Nachrichten von Benutzer-ID 1 (5), 2 (1), 3 (1). (Klammern zeigen die Anzahl der Nachrichten für jeden Benutzer-ID)Erhalten Sie eine Zeile für jede Spalte

Hallo hier ist mein Code:

$stmt = $dbh->prepare("SELECT * FROM messages WHERE user_id = :user_id ORDER BY id DESC"); 

ich habe Nachrichten für Benutzer-ID 1, 2 und 3. aber für Benutzer, die mehrere Nachrichten wie Benutzer-ID 1 haben, möchte ich nur die letzte Nachricht von Benutzer-ID 1 und nicht alle fünf Nachrichten und ich möchte die neuesten Nachrichten von Benutzer-ID 2 und 3 auswählen. wie kann ich das machen? Vielen Dank.

+0

Ich denke, wenn ich mich nicht irre, möchten Sie immer noch alle Benutzer gleichzeitig auswählen und nur die letzte Nachricht für jeden behalten. Ist das so? In diesem Fall ist Ihre Antwort bereits in dieser Frage: http://stackoverflow.com/questions/1313120/retrieving-the-last-record-in-each-group – Zeke

Antwort

1

Hinzufügen von "LIMIT 1" zu Ihrer Abfrage wird den Trick tun, glaube ich.

$stmt = $dbh->prepare("SELECT * FROM messages WHERE user_id = :user_id ORDER BY id DESC LIMIT 1"); 
+0

nein, dass nur eine Zeile auswählen, egal was – baileyJchoi

+0

normalerweise es tut was du beschrieben hast –

+0

fragst du das nicht? – marmeladze

Verwandte Themen