2016-12-14 36 views
1

我建立在PHP-SQL中的小遊戲,我有高分太一些查詢有錯誤

高分應該是爲了通過分數,然後通過用戶的時間內完成測試。

當用戶完成測試,並提交自己的分數和時間 - 我運行此查詢,並通過發現的

SELECT `rate` 
    FROM quiz_1_highscore 
    WHERE CASE `score` <= ? 
     WHEN true THEN 
      CASE `timer` >= ? 
       WHEN true THEN true 
       WHEN false THEN 
        CASE `score` != ? 
         WHEN true THEN true 
        END 
      END 
    END 
    ORDER BY `score` DESC, `timer` ASC 
    LIMIT 1 

率在第一和第三個參數是比分,而在第二個是時間(秒)

我有一個記錄 -

rate score time 
    25  10  65 
    26  10  74 
    27  10  74 
    28  10  78 

我打10分和70秒的紀錄 - 所以我應該被評爲26
但查詢返回27 - 爲什麼?

我查無極限,它的秩序 - 27 26 28 ...

我怎樣才能解決呢?

+1

您使用的RDBMS來訂購吧? –

回答

2

試試這個:

我想你想根據rateLIMIT 1

SELECT `rate` 
    FROM quiz_1_highscore 
    WHERE CASE `score` <= ? 
     WHEN true THEN 
      CASE `timer` >= ? 
       WHEN true THEN true 
       WHEN false THEN 
        CASE `score` != ? 
         WHEN true THEN true 
        END 
      END 
    END 
    ORDER BY `rate`,`score` DESC, `timer` ASC 
    LIMIT 1 
+0

非常感謝你! –