2015-08-28 38 views
0

例如,我有表列:SQL - 位统计

playerName TEXT, 
score INTEGER 

而且我在这个表10,000行。 现在我可以选择例如前100名玩家通过使用简单的SQLite查询:

SELECT playerName FROM table ORDER BY score DESC LIMIT 100 

现在我有一个问题:我怎样才能在播放器X的统计数据位置,这是不是在TOP100? 我可以通过选择所有行然后在循环中找到玩家X的位置来做到这一点,但我认为它没有很好的表现。 是在SQLite和MySQL中做到这一点的更简单的方法吗?

+0

你为什么要问关于MySQL,如果你正在使用SQLite? –

+0

我将来可能会将我的数据库迁移到MySQL,但目前我正在使用SQLite。 –

回答

1

你可以指望有多少球员有更大的成绩有:(如果你想知道这个所有玩家,只要一个查询会更有效)

SELECT COUNT(*) 
FROM MyTable 
WHERE score >= (SELECT score 
       FROM MyTable 
       WHERE playerName = 'X'); 

+0

谢谢,但是您如何看待制作新专栏“位置整数”并每隔1小时更新一次所有玩家?是否可以通过单个查询来完成? –

+0

在什么情况下这是一种改进? –

+0

我会probalby必须检查一些球员的排名经常位置,所以也许最好为它添加专栏并更新它,例如每1小时获得更快的球员位置。 –