В настоящее время я использую PHP/MySQL для выбора некоторых данных из моей базы данных. Мое текущее ВЫБРАТЬ утверждение:MySQL Select Statement - 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());
Есть некоторые столбцы, которые имеют один и тот же «нить идентификатор», таким образом, я использую GROUP BY, так что выбран только один столбец «поточно-идентификатор». Все отлично работает с группировкой, однако он выбирает первый столбец «поток-идентификатор», а не самый последний (что я и хочу).
Например, есть 4 колонки, все с той же thread_id:
thread_id unique_id
222 1
222 2
222 3
222 4
Когда я делаю GROUP BY, я хотел бы, чтобы получить один с уникальным идентификатором 4 (последний созданный столбец) , а не уникальный идентификатор 1 (старейший столбец создан).
Любые идеи о том, как достичь этого с помощью инструкции SELECT? Благодарю.
Ваш запрос может иметь SQL Injection уязвимости, потому что вы не параметризуя запрос или с помощью mysqli_real_escape_string(). –
Спасибо за ответы: Вот что я в настоящее время с помощью: $ данных = 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), как unique_id, tblusers.usrFirst А.С. first_name, tblusers.usrLast А.С. last_name ИЗ tblpm LEFT OUTER JOIN tblusers НА tblpm.sender_id = tblusers.usrID ГДЕ receiver_id = '$ usrID' GROUP BY thread_id ORDER BY unique_id DESC ") или die (mysql_error()); – 2009-07-25 03:53:14
Однако, когда я пытаюсь отобразить последний столбец «content», он по-прежнему показывает первое поле «контент», а не последнее. Как вы можете видеть, я пытаюсь вызвать MAX (tblpm.content), но это, похоже, не выполняет эту работу. Есть идеи, как это сделать? – 2009-07-25 03:54:09