Nie wiem, jak nazwać ten problem. Popraw mnie, jeśli masz lepsze słowa.MySQL wybierz najlepsze wiersze z tymi samymi wartościami warunkowymi
Mam dwie tabele, Użytkownicy i posty.
użytkowników:
id | username | password | ...
postów:
id | author_id | title | content | ...
Teraz chcę do listy "najbardziej aktywnych" użytkowników - użytkowników, którzy napisali najwięcej posty. A konkretnie chcę uzyskać wynik top 10
.
SELECT u.username, COUNT(p.id) AS count
FROM Posts p, Users u
WHERE u.id=p.author_id
GROUP BY p.author_id
ORDER BY count DESC
LIMIT 10;
Mogę uzyskać oczekiwany wynik. Jednak ranking może nie być "fair", jeśli niektórzy użytkownicy mają taką samą liczbę postów.
przykład może uzyskać wyniki takie jak:
User 1 | 14
User 2 | 13
...
User 9 | 4
User 10 | 4
tu, tam są rzeczywiście wiele więcej użytkowników, którzy mają 4
posty.
Tak więc top 10
może nie być dokładnie wynikiem 10
. Jak mogę uzyskać bardziej "uczciwy" wynik, który zawiera dodatkowe wiersze użytkowników, którzy mają 4
posty?
Bardzo ciekawy problem :) Może potrzebować zmiennej w zapytaniu, zobaczmy, co ludzie wymyślą. –
Czy chcesz dodać kilka przykładowych danych, abyśmy mogli zobaczyć kilka fajnych skrzypiec? –
@Hanky 웃 Panky I uprościł moje dane tutaj. Jeśli chcesz przetestować, możesz wypróbować przypadek "top 2", w którym możesz łatwo sfałszować niektóre dane. – mrmoment