Mysql MIN () не возвращает минимальное значение в другом столбце - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть две темы и сообщения в таблицах mysql, движок - InnoDB, и есть много сообщений с одним topic_id, и у меня есть простой запрос, подобный этому:

select post_id, MIN(post_time) AS post_time from test1_posts where topic_id=19;

Я ожидаю, что он вернетpost_id, который имеет минимальное значение post_time, и в большинстве случаев это так.

Мой вопрос: при каких обстоятельствах он НЕ возвратит post_id с минимальным значением post_time?

Если вам нужна дополнительная информация, оставьте комментарий.

1 Ответ

0 голосов
/ 25 сентября 2018

Нет гарантии, что он всегда вернет post_id, соответствующий минимуму post_time, потому что MySQL хранит данные как неупорядоченный набор данных;и post_id не обрабатывается ни в одной функции агрегирования.

Единственное время, когда вы можете быть на 100% уверены, что у вас есть только один пост для данного topic_id

Вам лучше заказать данные на основе post_time в порядке возрастания и использоватьLIMIT 1 чтобы найти строку, соответствующую минимуму post_time.Проверьте следующее:

SELECT post_id, post_time 
FROM test1_posts 
WHERE topic_id = 19 
ORDER BY post_time ASC 
LIMIT 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...