2012-03-27 28 views
0

如果我有一個MySQL表,有主ID和所謂gameScore我可以做線沿線的一些其他領域......選擇上一行mysql?

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

這將得到gameScore的ID爲100,但我想什麼要做的就是讓mysql按照gameScore排序,然後選擇上一行到id = 100的地方,如果這很有意義,謝謝...

+0

如果當前和以前的「gameScore」相等怎麼辦? – Devart 2012-03-27 16:57:03

+0

然後它應該選擇下一個最高。 – cgwebprojects 2012-03-27 17:01:40

回答

0

看起來很有趣 - 但也許這就是你要做的。

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

我建議做一個聯盟來代替,並提到(此外,你需要添加LIMIT 1這樣你就不會得到100下的所有行)

0

您正在尋找第二低的分數,對不對?像克雷格提到,限聽起來像正確的方式去:

SELECT 
    gameScore 
FROM 
    table1 
WHERE 
    id = 100 
ORDER BY 
    gameScore ASC 
limit 1,1 
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.