Mysql 假设每个记录都有一个不同的日期,这将一直工作到数据库变得繁忙。谢谢老板,这太完美了。将继续测试,如果一切正常,将接受您的答案。谢谢,也为我工作!这个查询有很多错误,但是错误是隐蔽的,只有在有大量数据的情况下你才能找到它们。我会试着写我自己的答案。这真的很有

Mysql 假设每个记录都有一个不同的日期,这将一直工作到数据库变得繁忙。谢谢老板,这太完美了。将继续测试,如果一切正常,将接受您的答案。谢谢,也为我工作!这个查询有很多错误,但是错误是隐蔽的,只有在有大量数据的情况下你才能找到它们。我会试着写我自己的答案。这真的很有,mysql,Mysql,假设每个记录都有一个不同的日期,这将一直工作到数据库变得繁忙。谢谢老板,这太完美了。将继续测试,如果一切正常,将接受您的答案。谢谢,也为我工作!这个查询有很多错误,但是错误是隐蔽的,只有在有大量数据的情况下你才能找到它们。我会试着写我自己的答案。这真的很有帮助。谢谢 messages ======== id thread_id user_id subject body date_sent SELECT id, thread_id, user_id, subject, body, date_sen


假设每个记录都有一个不同的日期,这将一直工作到数据库变得繁忙。谢谢老板,这太完美了。将继续测试,如果一切正常,将接受您的答案。谢谢,也为我工作!这个查询有很多错误,但是错误是隐蔽的,只有在有大量数据的情况下你才能找到它们。我会试着写我自己的答案。这真的很有帮助。谢谢 messages ======== id thread_id user_id subject body date_sent
SELECT id, thread_id, user_id, subject, body, date_sent
FROM messages
WHERE user_id=1 AND date_sent=(select max(date_sent))
GROUP BY thread_id
ORDER BY date_sent DESC
-- -- Table structure for table `messages` -- CREATE TABLE IF NOT EXISTS `messages` ( `id` int(10) unsigned NOT NULL auto_increment, `thread_id` int(10) unsigned NOT NULL, `user_id` int(10) unsigned NOT NULL, `body` text NOT NULL, `date_sent` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ; -- -- Dumping data for table `messages` -- INSERT INTO `messages` (`id`, `thread_id`, `user_id`, `body`, `date_sent`) VALUES (1, 1, 1, 'Test Message', '2011-01-20 00:13:51'), (2, 1, 6, 'Test Message', '2011-01-20 01:03:50'), (3, 1, 6, 'Test Message', '2011-01-20 01:22:52'), (4, 1, 6, 'Test Message', '2011-01-20 11:59:01'), (5, 1, 1, 'Test Message', '2011-01-20 11:59:22'), (6, 1, 6, 'Test Message', '2011-01-20 12:10:37'), (7, 1, 1, 'Test Message', '2011-01-20 12:10:51'), (8, 2, 6, 'Test Message', '2011-01-20 12:45:29'), (9, 1, 6, 'Test Message', '2011-01-20 13:08:42'), (10, 1, 1, 'Test Message', '2011-01-20 13:09:49'), (11, 2, 1, 'Test Message', '2011-01-20 13:10:17'), (12, 3, 1, 'Test Message', '2011-01-20 13:11:09'), (13, 1, 1, 'Test Message', '2011-01-21 02:31:43'), (14, 2, 1, 'Test Message', '2011-01-21 02:31:52'), (15, 4, 1, 'Test Message', '2011-01-21 02:31:57'), (16, 3, 1, 'Test Message', '2011-01-21 02:32:10'), (17, 4, 6, 'Test Message', '2011-01-20 22:36:57'), (20, 1, 6, 'Test Message', '2011-01-20 23:02:36'), (21, 4, 1, 'Test Message', '2011-01-20 23:17:22');
SELECT t.id, t.thread_id, t.user_id, t.body, t.date_sent
FROM messages AS t
CROSS JOIN (
  SELECT thread_id, MAX(date_sent) AS date_sent FROM messages WHERE user_id = 1 GROUP BY thread_id
) AS sq
USING (thread_id, date_sent)
SELECT id, thread_id, user_id, subject, body, date_sent
FROM messages
WHERE user_id=1 AND date_sent IN (select max(date_sent) from messages GROUP BY thread_id)
GROUP BY thread_id
ORDER BY date_sent DESC;
SELECT id, thread_id, user_id, subject, body, date_sent
FROM messages
WHERE user_id =1 AND date_sent IN (SELECT MAX( date_sent ) FROM messages GROUP BY thread_id)
ORDER BY thread_id ASC , date_sent DESC;
SELECT id, thread_id, user_id, subject, body, date_sent
  FROM messages WHERE date_sent IN (
    SELECT MAX( date_sent )
      FROM messages WHERE user_id =6 GROUP BY thread_id
  )
  ORDER BY thread_id ASC , date_sent DESC;
SELECT id, thread_id, user_id, subject, body, date_sent
FROM messages
WHERE id=(
    select m2.id from messages m2
    where messages.thread_id=m2.thread_id
    order by date_sent desc limit 1)
ORDER BY date_sent DESC
SELECT id, thread_id, user_id, subject, body, date_sent
FROM messages
WHERE id in (
    select max(m2.id) from messages m2 group by m2.thread_id)
ORDER BY date_sent DESC