Ich verwende derzeit PHP/MySQL, um einige Daten aus meiner Datenbank auszuwählen. Meine aktuelle SELECT-Anweisung ist:MySQL Select Anweisung - GROUP BY/Unique
mysql_query("SELECT * FROM tblpm WHERE receiver_id ='$usrID' GROUP BY
thread_id ORDER BY unique_id DESC") or die(mysql_error());
Es gibt einige Spalten, die den gleichen „thread-id“ haben, damit ich die GROUP BY verwendet wird, so dass nur ein „Thread-ID“ Spalte ausgewählt wird. Alles funktioniert gut mit der Gruppierung, aber es wählt die erste "thread-id" -Spalte und nicht die neueste (was ich will).
Zum Beispiel gibt es 4 Spalten alle mit dem gleichen thread_id:
thread_id unique_id
222 1
222 2
222 3
222 4
Als ich die GROUP BY tun, würde ich es wie die mit einzigartiger ID 4 (die zuletzt erstellte Spalte) abrufen , nicht eindeutige ID 1 (die älteste erstellte Spalte).
Alle Ideen, wie das mit meiner SELECT-Anweisung zu erreichen? Vielen Dank.
Ihre Abfrage eine SQL-Injection-Schwachstelle hat, weil Sie nicht Ihre Abfrage oder mit mysqli_real_escape_string Parametrisierung(). –
Danke für die Antworten: Hier ist, was ich bin derzeit mit: Daten $ = mysql_query ("SELECT tblpm.thread_id, tblpm.receiver_id, tblpm.title, MAX (tblpm.content), tblpm.date_sent, tblpm .sender_id, tblpm.read_pref, MAX (tblpm.id) als unique_id, tblusers.usrFirst AS first_name, tblusers.usrLast AS LAST_NAME FROM tblpm LEFT OUTER JOIN tblUsers tblpm.sender_id ON = tblusers.usrID WHERE receiver_id = '$ USRID' GROUP BY thread_id ORDER BY unique_id DESC ") oder sterben (mysql_error()); –
Wenn ich jedoch versuche, die neueste Spalte "Inhalt" anzuzeigen, wird immer noch das erste Feld "Inhalt" angezeigt, nicht das letzte. Wie Sie sehen können, versuche ich MAX (tblpm.content) aufzurufen, aber das scheint die Arbeit nicht zu erledigen. Irgendwelche Ideen, wie man das macht? –