1
私は、genreIdとそのジャンルに関連するランキングに関連付けられた複数のuserIdsを含むテーブルRANKINGSを持っています。MYSQLをジョインすると、同じテーブル+ COUNTでランクを決定します
ベンチマークとしてuserId = 30520を使用しますが、テーブルには多くのレコードが含まれています。
userId genreId ranking
30520 0 135
30520 13 91
30520 24 163
userIdの位置を手動で計算するのは簡単です。最後のレコードのために:このマニュアルアプローチで
SELECT COUNT(ranking) as position
FROM rankings
WHERE genreId = 24
AND ranking >= 163
ORDER BY ranking DESC
、私が取得:
userId genreId ranking position
30520 0 135 5
30520 13 91 17
30520 24 163 7
しかし、私は、これは1つのクエリで実現することができるか想像することはできません。私の試み:
SELECT userId, a.genreId, COUNT(a.ranking) as position,
FROM rankings a
LEFT JOIN
(
SELECT genreId, ranking
FROM rankings
WHERE userId = 30520
) b
ON a.genreId = b.genreId
AND a.ranking >= b.ranking
ORDER BY a.ranking DESC
私は一列のみを取得:
userId genreId position
30520 0 3741
は、任意のヒントをありがとう!
私は少しお返事を編集した:今、それは:-) THXの作品 – fab