我有一個MySQL查詢像這樣:MySQL的GROUP BY/ORDER BY問題
SELECT
MAX(messages.ID) as maxID,
messages.from,
messages.read,
users.userName
FROM
messages
LEFT OUTER JOIN
users
ON
users.ID = messages.from
WHERE
messages.to = ?
GROUP BY
messages.from
ORDER BY
maxID DESC
雖然這工作得很好,並且消息通過誰從大到小的順序發送它們的用戶是一羣,我現在有一個問題,當我想要通過messages.read行進行ORDER。我的代碼如下:
SELECT
MAX(messages.ID) as maxID,
messages.from,
messages.read,
users.userName
FROM
messages
LEFT OUTER JOIN
users
ON
users.ID = messages.from
WHERE
messages.to = ?
GROUP BY
messages.from
ORDER BY
messages.read ASC,
maxID DESC
現在,messages.read返回用戶發送的第一條消息的行的值。但我需要用戶發送的最新(最高ID)的值。 我知道表中的第一個GROUP BY組,所以我該如何解決這個問題?
非常感謝你提前, 菲捨爾
謝謝你的回答。我不知道MySQL會在GROUP BY上返回一個隨機行:)但是,如果未讀,messages.read爲0,如果讀取,則爲1。所以我不認爲我能從你的建議中完成我想要的東西! – fischer 2011-01-22 12:43:58