我有一个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