用于同一个表上的多个请求的SQL语句

时间:2014-03-01 16:51:19

标签: php mysql sql

我想从数据库表中选择多个值。 第一个请求是从前十个列表的表中获取前十个值。 第二个请求是让玩家在桌面上的位置。

伪语句可能看起来像:

SELECT * FROM mytable ORDER BY score DESC LIMIT 10 AND WHERE username = myusernamevariable

从表格中选择我需要获取第二个请求的位置(AND WHERE username = myusernamevariable)

有没有办法创建一个SQL-Statement,它返回前十个数据库条目和一个特定行的条目(以及该条目所在的位置)?

2 个答案:

答案 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 ;