簡體   English   中英

選擇新級別-SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM