我使用两个表在用户之间选择消息。表" messages“用于记录消息,表"members”用于检查用户数据(是活动的还是已删除的)。
这个查询运行良好。
我需要做的是按最后一次接收的顺序列出收到的消息。我试图在此查询的末尾使用"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
发布于 2010-03-13 06:48:40
像这样的东西怎么样
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或
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发布于 2010-03-13 06:41:47
表中有没有表示“已接收”的列,或者带有某种时间戳的列?如果你这样做了,你应该按此排序。
如果没有,请将整个表格结构张贴出来,以便我们能更好地帮助您。
发布于 2010-03-13 06:50:30
我不是sql专家,当您尝试ORDER by子句时,您是按messages.id排序还是在语句中声明别名"pid“?这会不会因为没有按预期工作而对订单产生影响?
https://stackoverflow.com/questions/2436342
复制相似问题