以下查询
显示完整排名的结果,但显示第二个查询
不在mysql中创建视图。
如何在下面创建查询视图?我尝试了很多方法,但无法弄明白。
1
SELECT @rownum := @rownum + 1 AS rank, name, vote
FROM uservotes, (SELECT @rownum := 0) t ORDER BY vote DESC
2
declare @rownum int
CREATE VIEW V AS SELECT @rownum := @rownum + 1 AS rank, name, vote
FROM uservotes, (SELECT @rownum := 0) t ORDER BY vote DESC
答案 0 :(得分:1)
不幸的是,您无法在VIEW
中使用用户变量。你必须以艰难的方式创建它,可能是这样的:
CREATE VIEW V AS
SELECT COUNT(y.*) as rank, x.name, x.vote
FROM uservotes x
JOIN uservotes y
ON y.votes >= x.votes
GROUP BY x.some_unique_column
ORDER BY x.vote DESC
这比原始查询慢一点。
请注意,rank
具有相同投票的2个条目相同,如果您不希望这样,则需要子查询或额外的ON
子句来决定平局。