У меня есть таблица (Counts) со многими элементами вроде:
ID | userid | count | entrydate
где ID - autoinc PK, идентификатор пользователя относится к таблице My Users, count - случайное целое число, а entrydate - временная метка unix.
У меня также есть таблица с именем Listmembers:
listid | userid
где оба поля вместе представляют собой PK, а listid относится к некоторой информации о списке.
Я хочу написать запрос, который возвращает последнее введенное значение счета для каждого пользователя в определенном списке.
Я попробовал варианты с GROUP BY (возвращает только первый введенный элемент данных для каждого пользователя, а не самый последний) с ORDER BY (но это возвращает все значения для соответствующих пользователей) с выбором пользователя внутри моего запроса (где userid IN (..)) и вне запроса (join listmembers on..). Никакой запрос не привел к тому, чего я хочу достичь: -/
select c.userid, c.count from counts C
inner join (select userid, max(entrydate)
from Counts group by userid) g
on c.userid =g.userid and c.entrydate = g.entrydate
inner join Listmembers L on l.userid = c.userid
where l.listid = @desiredList
(Примечание: я никогда не использовал mysql. Это должен быть синтаксис T-Sql, но он должен быть достаточно стандартным для работы с SQL)
Используйте max()
для этого:
max(entryDate)
SELECT c.count FROM Counts as c, Listmembers as l
WHERE l.userid = c.userid
AND l.listid = 'specific_value'
AND c.entrydate = MAX(c.entrydate)