我正在使用两个表来选择用户之间的消息。用于记录消息的表“消息”和用于检查用户数据的表“成员”(它们是激活还是删除)。
此查询正常工作。
我需要做的是列出最后收到的收到的消息顺序。我尝试在此查询结束时使用“ORDER BY messages.id DESC”,但它不起作用。 所有消息都是从首次收到的列出的。
这是我正在使用的mysql连接表查询:
sql = "SELECT DISTINCT messages.fromid,
messages.readed,
messages.fromid,
messages.toid ,
members.id AS pid
FROM messages
INNER JOIN members
ON members.id = messages.fromid
WHERE messages.toid = ".$mid."
AND members.status = 7
AND messages.kreaded !='1'
AND messages.subject != 'readed'
GROUP BY fromid"
有没有办法做到这一点?
alt text http://www.freeimagehosting.net/uploads/e12a5b5437.jpg
答案 0 :(得分:1)
像儿子一样
SELECT DISTINCT messages.fromid,
messages.readed,
messages.fromid,
messages.toid ,
members.id AS pid
FROM messages
INNER JOIN members
ON members.id = messages.fromid
WHERE messages.toid = ".$mid."
AND members.status = 7
AND messages.kreaded !='1'
AND messages.subject != 'readed'
ORDER BY messages.fromid ASC,
messages.id DESC
OR
SELECT DISTINCT messages.fromid,
messages.readed,
messages.fromid,
messages.toid ,
members.id AS pid
FROM messages
INNER JOIN members
ON members.id = messages.fromid
WHERE messages.toid = ".$mid."
AND members.status = 7
AND messages.kreaded !='1'
AND messages.subject != 'readed'
ORDER BY messages.fromid ASC,
messages.sendtime DESC
在 messages.fromid ASC 中, ASC 完全是语法上的,因为没有指定ASC / DESC的ORDER BY假定为ASC。
SELECT *
FROM TABLE
ORDER BY COL ASC
与
相同SELECT *
FROM TABLE
ORDER BY COL
答案 1 :(得分:0)
表中是否有“已接收”列或具有某种时间戳的列?如果你这样做,你应该按此命令。
如果没有,请发布整个表格结构,以便我们更好地为您提供帮助。
答案 2 :(得分:0)
我不是sql专家,当您尝试ORDER BY子句时,是否通过messages.id或您在语句中声明的别名“pid”进行了排序?可能因预期不按预期对订单产生影响?