我正在使用MySQL 5.5.4,并试图为我的网站制作私信(备忘录)。
我想创建显示包含/传出消息列表的页面(例如:http://www.iphonefaq.org/images/archives/Copic.png),所以我创建了一个SQL查询来获取所有消息
SELECT `note`.*, `sender`.`nickname` as sender_nickname, `receiver`.`nickname` as receiver_nickname
FROM (`note`)
JOIN `user` as sender ON `sender`.`user_id` = `note`.`sender_id`
JOIN `user` as receiver ON `receiver`.`user_id` = `note`.`receiver_id`
WHERE (sender_id = 1 or receiver_id = 1)
GROUP BY (if(sender_id > receiver_id, sender_id, receiver_id)), (if(sender_id <= receiver_id, receiver_id, sender_id))
ORDER BY `note`.`note_id` desc
(1
中的(sender_id = 1 or receiver_id = 1)
是登录的用户ID。
我想收到他们对话的 LATEST 消息,所以我添加了这个ORDER BY
子句:
ORDER BY `note`.`note_id` desc
但不起作用。这个查询错了吗?
表note
的SQL结构是:
CREATE TABLE IF NOT EXISTS `note` (
`note_id` int(11) NOT NULL,
`sender_id` int(11) NOT NULL,
`receiver_id` int(11) NOT NULL,
`note_content` longtext NOT NULL,
`send_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`is_receive` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=InnoDB EFAULT CHARSET=utf8;
请帮忙!非常感谢。
答案 0 :(得分:0)
&#39; group by&#39;按列分组数据并计算其他日期并生成虚拟计算列。未计算的原始列未订购。不是mysql那列甚至看起来都没有。 而且我认为你不需要分组。为什么要使用group by?