选择上一行mysql?

时间:2012-03-27 16:52:55

标签: mysql

如果我有一个有主要ID的mysql表和另一个名为gameScore的字段,我可以按照...的方式做一些事情。

SELECT gameScore FROM table1 WHERE id = 100 ORDER BY gameScore ASC

这将获得id为100的gameScore,但我想要做的是让game由gameScore对表进行排序,然后选择上一行到id = 100的位置,如果这有意义,谢谢... < / p>

5 个答案:

答案 0 :(得分:0)

看起来很有趣 - 但也许这就是你所追求的。

select max( gameScore )
from table1
where id = 100
and gameScore < ( select max( gameScore ) from table1 where id = 100 )

答案 1 :(得分:0)

答案 2 :(得分:0)

我建议做一个联合而不是AND(另外,你需要添加LIMIT 1,这样你就不会得到100以下的所有行)

答案 3 :(得分:0)

你正在寻找第二低的分数,对吧?就像克雷格提到的那样,限制听起来像是正确的方式:

SELECT 
  gameScore 
FROM 
  table1 
WHERE 
  id = 100 
ORDER BY 
  gameScore ASC 
limit 1,1

答案 4 :(得分:0)

像这样 -

SELECT t1.* FROM table1 t1
  JOIN (
    SELECT id, MAX(gameScore) gameScore FROM table1
      WHERE id = 100 AND gameScore < 50 ORDER BY gameScore
  ) t2
    On t1.id = t2.id AND t1.gameScore = t2.gameScore

要查找以前的记录,我们需要选择准确的当前记录,例如,它是id = 100且gameScore = 50的记录。

相关问题