设置MySQL查询的限制
我有这样的疑问:设置MySQL查询的限制,mysql,sql,Mysql,Sql,我有这样的疑问: SELECT `all_messages`.`user_1`, `messages`.*, `users`.`username` FROM `all_messages` JOIN `messages` ON (`all_messages`.`user_2` = `messages`.`from_user`) JOIN `users` ON (`all_messages`.`user_2` = `users`.`id`) WHERE `all_messages`.`user
SELECT `all_messages`.`user_1`, `messages`.*, `users`.`username`
FROM `all_messages`
JOIN `messages` ON (`all_messages`.`user_2` = `messages`.`from_user`)
JOIN `users` ON (`all_messages`.`user_2` = `users`.`id`)
WHERE `all_messages`.`user_1` = '12'
ORDER BY `messages`.`sent` DESC LIMIT 2
现在这个查询满足了我的需要,但我的问题是这行
ON (`all_messages`.`user_2` = `messages`.`from_user`)
它从找到匹配项的消息中选择所有数据,但我只需要一条最新记录。我希望你们明白我的意思。如果你需要一张“最新记录”,你应该有一个日期栏或什么的,让我们把它命名为“创建时间”
,这样你就可以这样做了
SELECT AM.user_1, M.*, U.username
FROM all_messages AM, messages M , users U
WHERE AM.user_1 = '12'
AND AM.user_2 = M.from_user
AND AM.user_2 = U.id
AND M.CREATION_TIME =
(
SELECT MAX(CREATION_TIME)
FROM messages
WHERE from_user= M.from_user
)
ORDER BY M.sent DESC LIMIT 2
编辑
SELECT AM.user_1, M.*, U.username
FROM all_messages AM, messages M, users U
WHERE AM.user_1 = '12'
AND AM.user_2 = M.from_user
AND AM.user_2 = U.id
AND M.sent =
(
SELECT MAX(sent)
FROM messages
WHERE from_user= M.from_user
)
ORDER BY M.sent DESC LIMIT 2
它应该可以工作所有的_消息都有时间戳吗?这是不是因为速度太慢而造成的问题?要仅获取一个值,您可以在接收语言(php、java、perl等)中执行此操作。所有消息都有日期,是的,如果我将其保留为这种方式,则速度会变慢,可能会有约1000个匹配项,我只需要最后一条消息。我仍然会收到相同的错误,如果它有助于
sent
字段是创建日期2012-01-10 19:59:33
Mm我看了看,没有问题,你复制粘贴得好吗?除息的