MySQL Select Statement - GROUP BY / Unique

时间:2009-07-25 01:55:30

标签: mysql select group-by

我目前正在使用PHP / MySQL从我的数据库中选择一些数据。我当前的SELECT语句是:

mysql_query("SELECT * FROM tblpm WHERE receiver_id ='$usrID' GROUP BY 
thread_id ORDER BY unique_id DESC") or die(mysql_error());

有些列具有相同的“thread-id”,因此,我使用GROUP BY,因此只选择了一个“thread-id”列。一切都适用于分组,但是,它选择的是第一个'thread-id'列,而不是最新的(这是我想要的)。

例如,有4列都具有相同的thread_id:

thread_id    unique_id
  222            1
  222            2
  222            3
  222            4

当我执行GROUP BY时,我希望它检索具有唯一ID 4(最近创建的列)的那个,而不是唯一ID 1(创建的最旧列)。

有关如何使用SELECT语句实现此目的的任何想法?感谢。

3 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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