2016-03-05 74 views
0

我在我的數據庫中有一張表,其中包含用於在人與人之間記錄遊戲的數據。我希望有一個查詢可以返回兩個玩家之間最接近的遊戲,即記錄的兩個得分之間的最小差異,而不管誰贏了。我已經開始了這樣的查詢,但我不能完全得到我想要的。如何找到Mysql中兩列之間的最小差異?

SELECT recorder_score, opponent_score 
from games 
where recorder_id = $recorder_id 
order by (recorder_score - opponent_score) 
limit 1 

以上顯然將只返回最近的遊戲,提交遊戲的人贏了,但正如我所說,我想最近的比賽無論誰獲勝。什麼是最好的做法呢?

+0

是記錄永遠的贏家之間的最近的比賽?對手的身份是什麼?請提供您的表格模式,樣本數據和預期結果。 – sgeddes

+0

錄音機並不總是贏家。對手身份不記錄,因爲對手可能是沒有在網站內註冊的人。識別對手的唯一方法是輸入的名稱可能會有所不同。這個查詢唯一相關的列是我提到的:recorder_id,recorder_score,opponent_score。其他列包括game_date,game_id和opponent_name。 – Chickhorse

回答

1

使用ABSOrder by得到兩名球員

SELECT recorder_score, opponent_score 
from games 
where recorder_id = $recorder_id 
order by ABS(recorder_score - opponent_score) 
limit 1 
+0

我認爲這是正確的解決方案 - +1。 – sgeddes

+0

這工作完美!我完全忘了使用ABS,感謝您的快速響應! – Chickhorse

相關問題