2009-07-25 5 views
0

В настоящее время я использую 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? Благодарю.

+0

Ваш запрос может иметь SQL Injection уязвимости, потому что вы не параметризуя запрос или с помощью mysqli_real_escape_string(). –

+0

Спасибо за ответы: Вот что я в настоящее время с помощью: $ данных = 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

+0

Однако, когда я пытаюсь отобразить последний столбец «content», он по-прежнему показывает первое поле «контент», а не последнее. Как вы можете видеть, я пытаюсь вызвать MAX (tblpm.content), но это, похоже, не выполняет эту работу. Есть идеи, как это сделать? – 2009-07-25 03:54:09

ответ

3
SELECT thread_id, MAX(unique_id) 
FROM tblpm 
GROUP by thread_id 

так:

mysql_query(<<<END 
SELECT thread_id, MAX(unique_id) 
FROM tblpm 
WHERE receiver_id ='$usrID' 
GROUP by thread_id 
END 
) or die(mysql_error()); 

и, конечно, убедитесь, что вы убегаете $ USRID, если он приходит из браузера.

0
SELECT thread_id, max(unique_id) 
FROM tblpm 
WHERE receiver_id = '$usrID' 
GROUP BY thread_id; 
0
SELECT DISTINCT thread_id, unique_id 
FROM tblpm 
WHERE receiver_id = '$usrID' 
GROUP BY thread_id 
ORDER BY unique_id DESC; 

 Смежные вопросы

  • Нет связанных вопросов^_^