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的最后一个,这就是为什么我希望它分组。
答案 0 :(得分:4)
使用:
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)