我有一个表格,在其中我跟踪不同flash游戏的用户分数。桌子
games_scores
定义如下:
alt text http://img13.imageshack.us/img13/7262/structure1.png
此表中的任何游戏,每个用户都可以有多个条目。当我显示记分板时,我只为每个用户选择最大分数。没什么特别的。
SELECT
COUNT(*) + 1
FROM (
SELECT
MAX(score)
FROM
games_scores gs
WHERE
gs.games_id = ?
AND gs.score > (
SELECT
MAX(gs2.score)
FROM
games_scores gs2
WHERE
gs2.games_id = ?
AND gs2.users_id = ?
AND gs2.add_time = ?
)
AND gs.add_time = ?
GROUP BY
gs.users_id
) AS tmp_table
SELECT
MAX(gs.score)
FROM
games_scores gs
WHERE
gs.games_id = ?
AND gs.users_id = ?
gs.add_time >= ?
我想知道有没有更有效的方法?例如,将查询组合成一个查询。