MySQL计算ID

时间:2018-02-27 16:30:49

标签: php mysql join

我有以下查询,它返回事件详细信息和基于投票数的排名。

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

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