2012-03-27 9 views
0

私は、これは、ID 100のためgameScoreを取得しますが、私が望むものを前の行を選択するmysql?

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

主のIDを持っていたMySQLのテーブルとgameScore私はの線に沿って何かを行うことができますと呼ばれる別のフィールドを...持っている場合gameScoreでテーブルを注文してからid = 100の前の行を選択してください。

+0

現在と以前の 'gameScore'が等しい場合はどうなりますか? – Devart

+0

次に、次に高いものを選択する必要があります。 – cgwebprojects

答えて

0

これは面白いようですが、多分これはあなたの後です。

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

に言及したラグ機能を私の代わりにとの結合を行うことをお勧め(ほかに、あなたがLIMIT 1を追加する必要があるので、あなたは100の下ですべての行を得ることはありません)

0

2番目に低いスコアをお探しですか?クレイグは述べたように、制限が行くための正しい方法のように聞こえる:このような

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.