2011-07-20 92 views
0

我有這個疑問:MYSQL - GROUP BY和ORDER BY問題

SELECT id, rdate, member_id 
FROM msgs 
WHERE wrote_to='1000' 
AND tb1.member_id != '1002' 
AND deleted != '1000' 
GROUP BY member_id 
ORDER BY rdate DESC 

問題是我得到的消息,但沒有RDATE新一...

我怎樣才能通過他們訂購rdate和group by member_id?...所以我會得到每個用戶的最新消息?

謝謝。

+1

您的tb1的別名無效 –

回答

0

rdate可能來自另一個表,否則您輸入了錯誤的coluomn名稱。

+0

no;它在那裏 - 它只是不在整體中 –

0

嘗試:

SELECT * FROM (
     SELECT id, rdate, member_id FROM msgs 
     WHERE wrote_to = '1000' 
     AND tb1.member_id != '1002' 
     AND deleted != '1000' 
    ORDER BY rdate DESC 
) tmp_msgs 
GROUP BY member_id 

這將有少的性能,因爲臨時表,但是這是一個權衡你必須做出一個可行的解決方案。

As @Brendan Bullen已經注意到,你爲什麼在那裏使用別名tb1.

0

假定一個順序編號:

SELECT id, rdate, member_id 
FROM msgs 
WHERE wrote_to='1000' 
AND tb1.member_id != '1002' 
AND deleted != '1000' 
GROUP BY member_id 
HAVING id = MAX(id) 
ORDER BY rdate DESC 

上嵌套查詢使用GROUP BY是不可靠的(即使在定購的結果)作爲用於在該分組未指定列中的行爲是未定義的。