MySQL Max语句没有返回结果

时间:2013-05-22 22:53:00

标签: mysql database max

我有以下MySQL声明

SELECT * FROM user_messages AS T WHERE user_id = '33' AND id = (SELECT Max(id) from user_messages AS TT WHERE T.from_userid = TT.from_userid) ORDER BY status, id DESC

我似乎遇到的问题是我只有一条记录。我认为MySQL将返回与user_link ='33'相关联的单个记录,但它不会返回任何内容。

我需要使用“Max”功能,因为我用它来提取最新的条目。我试图避免多个查询或不得不使用PHP进行排序。任何帮助非常感谢!

2 个答案:

答案 0 :(得分:0)

这是您的查询:

SELECT *
FROM user_messages AS T
WHERE user_id = '33' AND
      id = (SELECT Max(id)
            from user_messages AS TT
            WHERE T.from_userid = TT.from_userid
           )
ORDER BY status, id DESC

以下三个原因可能导致无法返回任何行。首先,表中可能不存在user_id = '33'。第二个from_userid可能为NULL。第三,所有匹配记录的id值可能为NULL。

也许这个更简单的版本会有所帮助:

select *
from user_messages um
where user_id = '33'
order by id desc
limit 1

答案 1 :(得分:0)

感谢您的回答戈登,我检查了数据库,并且记录存在。我做了更多的研究,结果是我需要加入数据。我能够返回最小或最大记录,但相应/相关字段不随其返回。

SELECT * FROM user_messages INNER JOIN(SELECT from_username, MAX(id) AS id FROM user_messages WHERE user_link = '33' GROUP BY from_username ORDER BY status, id DESC) t2 ON user_messages.id = t2.id AND user_messages.from_username = t2.from_username

回答问题的主题就是这个 - Need To Pull Most Recent Record By Timestamp Per Unique ID