我有这张桌子:
CREATE TABLE IF NOT EXISTS `razorphyn_support_list_messages` (
`id` BIGINT(15) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` BIGINT(11) UNSIGNED NOT NULL,
`message` TEXT NOT NULL,
`ticket_id` BIGINT(11) UNSIGNED NOT NULL,
`ip_address` VARCHAR(20) NOT NULL,
`created_time` DATETIME NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=20;
并使用此查询选择行(仅限第一次):
SELECT `user_id`,`message`,`created_time`
FROM ".$SupportMessagesTable."
WHERE `ticket_id`=?
ORDER BY created_time DESC LIMIT 10
这很好,但在我调用一个AJAX脚本来反转其他行之后,该函数向PHP脚本发送一些信息,并且它们之间还有一个var(offset),每当我得到一个肯定的响应时,它就会递增服务器。
问题是我想显示从最新到最旧的记录,我不知道如何从查询中排出“最后一行 - 最好的”:
$query = "SELECT `user_id`,`message`,`created_time`
FROM ".$SupportMessagesTable."
WHERE ticket_id=? AND 'last row'-".$offset.")
ORDER BY created_time DESC LIMIT ".$postnumbers;
我认为这样的事情但显然是错的(不幸的是我不太了解mysql):
"SELECT `user_id`,`message`,`created_time`
FROM ".$SupportMessagesTable."
WHERE ticket_id=?
ORDER BY created_time DESC
LIMIT
((SELECT COUNT(*)
FROM ".$SupportMessagesTable."
WHERE ticket_id=?)-".$offset."),".$postnumbers;
$postnumbers
等于10,$offset
的第一个值为21,每次成功调用后将增加10
这些是记录:
id,user_id,message,ticket_id,ip address, created_time
(1, 55, '<p>ciao ciao</p> <p>ciao</p> ', 41, '127.0.0.1', '2013-05-15 06:26:01'),
(2, 55, '<p>ciao ciao</p> <p>ciao</p> ', 41, '127.0.0.1', '2013-05-16 09:29:43'),
(3, 55, '1', 41, '127.0.0.1', '2013-05-16 17:06:01'),
(4, 55, '2', 41, '127.0.0.1', '2013-05-16 17:07:01'),
(5, 55, '3', 41, '127.0.0.1', '2013-05-16 17:08:01'),
(6, 55, '4', 41, '127.0.0.1', '2013-05-16 17:09:01'),
(7, 55, '9', 49, '127.0.0.1', '2013-05-16 17:14:01'),
(8, 55, '5', 41, '127.0.0.1', '2013-05-16 17:10:01'),
(9, 55, '6', 41, '127.0.0.1', '2013-05-16 17:11:01'),
(10, 55, '7', 41, '127.0.0.1', '2013-05-16 17:12:01'),
(11, 55, '8', 41, '127.0.0.1', '2013-05-16 17:13:01'),
(12, 55, '9', 41, '127.0.0.1', '2013-05-16 17:14:01'),
(13, 55, '9', 49, '127.0.0.1', '2013-05-16 17:14:01'),
(14, 55, '10', 41, '127.0.0.1', '2013-05-16 17:15:01');
第一次运行我会选择ID 14和12到3除了7(不同的票证ID)和第二个查询我要选择id 1和2
可能最简单的解决方案是将$postnumbers*number of calls
重新转换为while
循环,只返回其中的十个,但我认为它不会非常有效
答案 0 :(得分:0)
不确定这是不是你的意思,而是例如下一个10
SELECT `user_id`,`message`,`created_time`
FROM ".$SupportMessagesTable."
WHERE `ticket_id`=?
ORDER BY created_time DESC LIMIT 11, 10