我有以下查询,它返回事件详细信息和基于投票数的排名。
SELECT e.guid, e.name, e.desc, e.location, e.votes,
@curRank := @curRank + 1 AS rank
FROM event e, (SELECT @curRank := 0) r
ORDER BY votes DESC
这给了我所需的输出。但是因为我想存储更多关于谁投票的信息(以确定用户是否可以投票 - 因为每人允许1票)。我创建了一个名为 event_votes 的新表,它看起来像:
event_vote_id | event_guid | user_guid
1 abc1 def6
2 ghi4 def6
3 abc1 lmn2
如何让第一个查询再次使用 event_votes
中的event_guid的出现次数替换e.votes(一个递增的字段)预期结果
guid:abc1
name:testevent
desc:example
地点:伦敦
票数:2
排名:1
答案 0 :(得分:1)
我没有测试它,但希望它有效。
SELECT e.guid, e.name, e.desc, e.location,
(SELECT COUNT(ev.id) FROM event_votes ev WHERE ev.event_guid = e.guid) AS votes,
@curRank := @curRank + 1 AS rank
FROM event e, (SELECT @curRank := 0) r
ORDER BY votes DESC