MYSQL: выбрать строку для данного фильтра и максимальное значение ключа - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть таблица (tUsuariosLog), которая содержит историю обновленной информации для данного пользователя. Поэтому, если я хочу прочитать текущую информацию о заданном пользователе, мне нужно выполнить строку с наибольшим значением ключа в ключевом столбце (ключевой столбец имеет auto_increment).

Вот запрос, который я использую, чтобы получить его.

SELECT * FROM tUsuariosLog WHERE cUid = '15' AND cKeyid = (SELECT MAX(cKeyid) FROM tUsuariosLog WHERE cUid = '15')

Кажется, это слишком сложный способ достижения того, чего я хочу (хотя это работает).

У меня вопрос, есть ли лучший способ получить то, что я хочу, запрос в запросе.

1 Ответ

0 голосов
/ 01 ноября 2018

Как насчет использования order by и limit?

SELECT ul.*
FROM tUsuariosLog ul
WHERE cUid = 15 
ORDER BY cKeyid DESC
LIMIT 1;

Я предполагаю, что cUid - это число, а не строка, поэтому я удалил одинарные кавычки.

Для производительности вам нужен индекс на tUsuariosLog(cUid, cKeyid).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...