MySQL Return 具有总排名的特定用户的事件
MySQL Return event for specific user with an overall rank
我如何合并以下两个查询,以便为我提供具有总体排名的特定用户事件?
查询 1。Returns根据投票数对事件的排名。
SELECT e.guid, e.name, e.votes, @curRank := @curRank + 1 AS rank
FROM event e, (SELECT @curRank := 0) r
ORDER BY votes DESC;
查询 2。Returns 个特定用户的事件。
SELECT e.guid, e.name, e.votes
FROM user_event ue
JOIN event e
ON e.guid = ue.event_uid
WHERE ue.user_uid = '123';
事件Table
guid | name | votes
-------------------
abc event1 10
def event2 5
ghi event3 15
用户事件Table
user_event_id | event_guid | user_uid
--------------------------------------
1 abc 123
2 def 123
3 ghi 456
合并查询应该 return for user123
guid name votes rank
abc | event1 | 10 | 2
def | event2 | 5 | 3
或用户 456:
guid name votes rank
ghi | event3 | 15 | 1
这应该适用于您的版本:
SELECT r.* FROM user_event ue
JOIN(
SELECT e.guid, e.name, e.votes, @curRank := @curRank + 1 AS rank
FROM event e, (SELECT @curRank := 0) r
ORDER BY votes DESC
) AS r ON r.guid = ue.event_guid
WHERE ue.user_uid = 123
我如何合并以下两个查询,以便为我提供具有总体排名的特定用户事件?
查询 1。Returns根据投票数对事件的排名。
SELECT e.guid, e.name, e.votes, @curRank := @curRank + 1 AS rank
FROM event e, (SELECT @curRank := 0) r
ORDER BY votes DESC;
查询 2。Returns 个特定用户的事件。
SELECT e.guid, e.name, e.votes
FROM user_event ue
JOIN event e
ON e.guid = ue.event_uid
WHERE ue.user_uid = '123';
事件Table
guid | name | votes
-------------------
abc event1 10
def event2 5
ghi event3 15
用户事件Table
user_event_id | event_guid | user_uid
--------------------------------------
1 abc 123
2 def 123
3 ghi 456
合并查询应该 return for user123
guid name votes rank
abc | event1 | 10 | 2
def | event2 | 5 | 3
或用户 456:
guid name votes rank
ghi | event3 | 15 | 1
这应该适用于您的版本:
SELECT r.* FROM user_event ue
JOIN(
SELECT e.guid, e.name, e.votes, @curRank := @curRank + 1 AS rank
FROM event e, (SELECT @curRank := 0) r
ORDER BY votes DESC
) AS r ON r.guid = ue.event_guid
WHERE ue.user_uid = 123