Я выполняю некоторую работу по рефакторингу кода PHP / MySQL и наткнулся на интересную проблему, и на данный момент я не могу найти правильное решение для нее.
У меня есть эта таблица:
CREATE TABLE example
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
userID INT UNSIGNED NOT NULL,
timestamp INT UNSIGNED NOT NULL,
value DECIMAL(10,2) NOT NULL
);
Я пытаюсь получить последнюю запись строки для каждого отдельного идентификатора пользователя.
В настоящее время это делается так:
SELECT DISTINCT userID
FROM example
, затем с помощьюPHP Я зацикливаюсь на результате и запускаю этот запрос для каждого отдельного идентификатора пользователя
SELECT *
FROM example
WHERE userID = %u
ORDER BY timestamp DESC
LIMIT 1
Я пытался объединить эти запросы в один, используя:
GROUP BY userID
HAVING MAX(timestamp)
, но безрезультатно.
Есть предложения?