如果我有一个有主要ID的mysql表和另一个名为gameScore的字段,我可以按照...的方式做一些事情。
SELECT gameScore FROM table1 WHERE id = 100 ORDER BY gameScore ASC
这将获得id为100的gameScore,但我想要做的是让game由gameScore对表进行排序,然后选择上一行到id = 100的位置,如果这有意义,谢谢... < / p>
答案 0 :(得分:0)
看起来很有趣 - 但也许这就是你所追求的。
select max( gameScore )
from table1
where id = 100
and gameScore < ( select max( gameScore ) from table1 where id = 100 )
答案 1 :(得分:0)
查看本网站提及的延迟功能 http://explainextended.com/2009/03/10/analytic-functions-first_value-last_value-lead-lag/
答案 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的记录。