按顺序分组 - 不工作

时间:2014-12-11 07:46:23

标签: mysql sql-order-by

我正在使用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;

请帮忙!非常感谢。

1 个答案:

答案 0 :(得分:0)

&#39; group by&#39;按列分组数据并计算其他日期并生成虚拟计算列。未计算的原始列未订购。不是mysql那列甚至看起来都没有。 而且我认为你不需要分组。为什么要使用group by?