Не могу написать запрос MySQL, я хочу

0

У меня есть таблица (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..). Никакой запрос не привел к тому, чего я хочу достичь: -/

Теги:
greatest-n-per-group

3 ответа

3
Лучший ответ
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)

  • 0
    я вижу, что вы там делали, но эффективно ли это, когда в графах много записей? Выбрать из него дважды?
  • 0
    Это будет работать. Единственное, что вы забыли - это фильтрация по списку. Попробуйте добавить его.
Показать ещё 2 комментария
0

Используйте max() для этого:

max(entryDate)
  • 0
    я не хочу, чтобы entrydate, я хочу, чтобы количество, которое идет с макс (entrydate)
-1
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)
  • 0
    MySQL говорит мне "Неправильное использование групповой функции"
  • 0
    Подразумеваемые объединения, очень плохо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню