我有两个mysql表topics和posts,引擎是innodb,有很多posts有一个topic\u id,我有这样一个简单的查询:
select post_id, MIN(post_time) AS post_time from test1_posts where topic_id=19;
我希望它返回post\u id,它有最短的post\u时间,在大多数情况下,它是这样的。我的问题是,在什么情况下,它不会返回具有最短发布时间的post\u id?如果您需要更多信息,请留言。
yjghlzjz1#
不能保证它会永远回来 post_id 对应最小值 post_time ,因为mysql将数据存储为无序数据集;以及 post_id 未在任何聚合函数下处理。只有当你能百分之百确定的时候,你才有一个职位 topic_id 你应该根据 post_time 按升序排列并使用 LIMIT 1 查找与最小post时间相对应的行。检查以下各项:
post_id
post_time
topic_id
LIMIT 1
SELECT post_id, post_time FROM test1_posts WHERE topic_id = 19 ORDER BY post_time ASC LIMIT 1
1条答案
按热度按时间yjghlzjz1#
不能保证它会永远回来
post_id
对应最小值post_time
,因为mysql将数据存储为无序数据集;以及post_id
未在任何聚合函数下处理。只有当你能百分之百确定的时候,你才有一个职位
topic_id
你应该根据post_time
按升序排列并使用LIMIT 1
查找与最小post时间相对应的行。检查以下各项: