GROUP BY和ORDER BY [复制]

  可能重复:   GROUP BY中的SQL ORDER BY总计
SELECT *
FROM users_pm_in
WHERE uID = '1'
GROUP BY dialog_id
ORDER BY date DESC
不会正常工作。我想要做的是分组到dialog_id ..然后所有与dialog_id按日期排序,然后按日期排序所有.. 所以:
id | uID | bID | msg     | dialog_id | date
--------------------------------------------------
 1 | 1   | 2   | Hello   | 1         | 1289158631
 2 | 2   | 1   | Hi?     | 1         | 1289158691
 3 | 1   | 2   | Wazzaa? | 1         | 1289158931
dialog_id的两个条目得1(使用GROUP BY)。好。然后它应该通过具有最新日期(按日期desc排序)的两个entrys(组内)中的一个来排序。这个案件的日期是1289158931。 如何才能做到这一点? 更新: 我想要出来的:
while($row = mysql_fetch_array($query)){
    echo $row["msg"] // it should echo "Wazzaa?"
    echo $row["id"] // it should give me id 3
}
它给了我每个dialog_id的最后一个,这就是我希望它分组的原因。     
已邀请:
使用:
  SELECT a.id, 
         a.msg
    FROM USERS_PM a
   WHERE a.dialog_id = 1
     AND 1 IN (a.uid, a.bid)
ORDER BY a.date DESC
   LIMIT 1
...要么:
SELECT a.id, 
       a.msg
  FROM USERS_PM a
  JOIN (SELECT t.dialog_id,
               MAX(t.date) AS max_date
          FROM USERS_PM t
      GROUP BY t.dialog_id) b ON b.dialog_id = a.dialog_id
                             AND b.max_date = a.date
 WHERE a.dialog_id = 1
   AND 1 IN (a.uid, a.bid)
    

要回复问题请先登录注册