我想从数据库表中选择多个值。 第一个请求是从前十个列表的表中获取前十个值。 第二个请求是让玩家在桌面上的位置。
伪语句可能看起来像:
SELECT * FROM mytable ORDER BY score DESC LIMIT 10 AND WHERE username = myusernamevariable
从表格中选择我需要获取第二个请求的位置(AND WHERE username = myusernamevariable)
有没有办法创建一个SQL-Statement,它返回前十个数据库条目和一个特定行的条目(以及该条目所在的位置)?
答案 0 :(得分:2)
您想要这个位置还是要确定玩家所在的行?您可以轻松添加标记以标识玩家的行:
Select t.*, (username = myusernamevariable) as IsMyPlayer
FROM mytable t
ORDER BY score DESC
LIMIT 10 ;
如果你想返回一个玩家的位置和行,那么你需要两个查询,因为返回集的结构是不同的。如果你想在每一行上排名,你可以使用:
Select t.*, (username = myusernamevariable) as IsMyPlayer, (@rank := @rank + 1) as rank
FROM mytable t cross join
(select @rank := 0) const
ORDER BY score DESC
LIMIT 10 ;
答案 1 :(得分:0)
获得球员位置:
SELECT COUNT(id)+1 AS position FROM mytable
WHERE score > (SELECT score FROM mytable WHERE username = 'myusernamevariable')
ORDER BY score DESC LIMIT 10 ;