ServiceLocator.dll
, для которой требуется старая версия сборки Unity, теперь, когда вы ссылаетесь на ServiceLocator
, вы должны предоставить ей старую версию Unity, и это создает проблему. Вы можете использовать FusLogVw , чтобы узнать, кто загружается старые сборки, просто определите путь для журнала и запустите свое решение, затем проверьте (в FusLogvw) первую строку, где загружена сборка Unity, дважды щелкните ее и посмотрите на вызывающую сборку, и здесь вы идете.
Если предположить, что более высокий идентификатор означает более свежий отчет (лучше хранить временную метку), вы можете использовать оконные функции в последних версиях sqlite, чтобы упростить задачу:
SELECT id, user_id, report_id, earned
FROM (SELECT id, user_id, report_id, earned
, rank() OVER (PARTITION BY report_id, user_id ORDER BY earned DESC, id DESC) AS ranking
FROM example)
WHERE ranking=1 AND report_id=3;
id user_id report_id earned
---------- ---------- ---------- ----------
10 20 3 30
9 40 3 50
Я думаю, вам нужно это:
select max(s.id) id, s.user_id, s.report_id, s.earned from (
select user_id, report_id, max(earned) maxearned
from submission
group by user_id, report_id
) g inner join submission s
on s.user_id = g.user_id and s.report_id = g.report_id and s.earned = g.maxearned
group by s.user_id, s.report_id, s.earned
См. Демонстрацию
Если вы хотите запросить только для report_id = 3
:
select max(s.id) id, s.user_id, s.report_id, s.earned from (
select user_id, report_id, max(earned) maxearned
from submission
where report_id = 3
group by user_id, report_id
) g inner join submission s
on s.user_id = g.user_id and s.report_id = g.report_id and s.earned = g.maxearned
group by s.user_id, s.report_id, s.earned
order by id
См. демо