【发布时间】:2017-09-23 04:20:43
【问题描述】:
我有一个聊天系统,我想显示过去一小时内发送的消息,但我也想显示最近的 20 条消息,无论它们是多久前发送的。
有没有办法在 SQL 查询中做到这一点?
CREATE TABLE IF NOT EXISTS `chat` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT(11) UNSIGNED NOT NULL,
`item_id` INT(11) UNSIGNED NOT NULL,
`message` TEXT NOT NULL,
`recipient` INT(11) NOT NULL DEFAULT '0',
`type` ENUM ('message', 'announcement') NOT NULL DEFAULT 'message',
`channel` ENUM ('general', 'private') NOT NULL DEFAULT 'general',
`posted` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `posted` (`posted`),
KEY `type` (`type`),
KEY `channel` (`channel`),
KEY `recipient` (`recipient`)
)
ENGINE = MyISAM
DEFAULT CHARSET = `utf8`
AUTO_INCREMENT = 2;
【问题讨论】:
-
显示表的架构。
-
@SloanThrasher 抱歉,添加了架构。只是没想到会有那么大的帮助。
-
一个简单的
ORDER BY posted限制为 20 就可以了 -
只是让编写 example.answer 变得更容易。
-
@Fred-ii- 那不是只显示过去一小时内的最后 20 个项目吗?呵呵,我试试。