我試圖用表格中的條目構建高分表在mysql中:如果兩個值相等(如果兩個值相等時應如何選擇最近添加的行)(應用程序是遊戲高分表)
id(int) | username(varchar) | score(int) | modified (timestamp)
選擇每天的得分最高爲每個用戶工作良好使用下列內容:
SELECT id, username, MAX(score) AS hiscore
FROM entries WHERE DATE(modified) = CURDATE()
我在哪裏卡住的是,在某些情況下起着多次就可以達到同樣的比分在同一天,在這種情況下,我需要確保它始終是最早的一個因爲2分的比賽而被選中的人將成爲第一個獲得該分數的人。
如果我的表包含以下內容:
id | username | score | modified
________|___________________|____________|_____________________
1 | userA | 22 | 2014-01-22 08:00:14
2 | userB | 22 | 2014-01-22 12:26:06
3 | userA | 22 | 2014-01-22 16:13:22
4 | userB | 15 | 2014-01-22 18:49:01
在這種情況下返回的中獎表應該是:
id | username | score | modified
________|___________________|____________|_____________________
1 | userA | 22 | 2014-01-22 08:00:14
2 | userB | 22 | 2014-01-22 12:26:06
我試圖通過增加ORDER BY modified desc
到查詢來實現這一點,但它總是返回後面的分數。我也試過ORDER BY modified asc
,但是我得到了相同的結果
好了,我的想法,儘管使用這個語句是SQL的錯誤結果:未知列「e.modified_date」在'where子句' – Finglish
我的錯誤。我已糾正它。 –