[英]Selecting new level - SQL
我有一張桌子來存儲這個模式的球員
id_person name level experience
一張存儲玩家等級和經驗點的表格必須處於這種等級
level points_experience
當某人獲得經驗時,將其與當前經驗相加,如果玩家可以達到新的水平,我將對其進行更新。 我可以通過一些php代碼和查詢來做到這一點,但是是否可以通過一個查詢來獲得他/她已經達到的水平?
考慮這個例子
level points_experience
1 100
2 200
3 400
4 900
5 2000
如果一個人有250點經驗,那么他現在處於2級。如果他殺死一個生物得1800點,我想查詢一下我必須在更新中使用的5級。 數據庫:mysql
您需要的查詢是:
SELECT level
FROM experience_levels # put the correct table name
WHERE points_experience < (250+1800) # put the actual value here
ORDER BY points_experience DESC
LIMIT 1
如果用戶的經驗不足100分會怎樣? 您應該添加一個額外的行,其points_experience = 0
或從您的客戶端代碼處理這種情況(上面的查詢將不返回任何行)或確保它永遠不會發生。
如果需要將級別添加到用戶信息中,則可以JOIN
表
SELECT p.*, IFNULL(l.level, 0) AS level
FROM players p
LEFT JOIN experience_levels l ON l.points_experience < p.experience
WHERE p.id_person = 123 # put the correct ID here
ORDER BY l.points_experience DESC
LIMIT 1
對於經驗值少於100的玩家,此查詢應在level
列中返回0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.