我有一個表格,其中包含一個字符的等級列表,每個字符都與一個數字值(xp)關聯。更高的等級是需要更多的XP。我想知道構建查詢來查找角色屬於哪個排名的最簡單方法。 的想法是使用它是一個子查詢,所以選擇角色在子查詢上的MySQL間隔()
SELECT name, xp FROM characters
的時候我就能夠得到基於對XP量字符排名。如果我使用的行列表兩列的最小值和最大值XP需要很容易:
SELECT
name, xp
(SELECT rank FROM ranks WHERE xp BETWEEN xp_min AND xp_max) as rank
FROM characters
,但我想有它只有一列做了排名的下邊界
UPDATE: 貌似INTERVAL
這裏是一個紅色的鯡魚,保持它的搜索目的
我可以使用INTERVAL()
功能(MySQL Documentation)對於這一點,如果我編程方式構造查詢:
SELECT INTERVAL(character_xp, rank1, rank2, rank3, rank4)
但是有沒有辦法使用子查詢來實現這個?以下不工作
SELECT INTERVAL(character_xp, (SELECT rank FROM ranks ORDER by rank))
而且也沒有這樣的:
SELECT INTERVAL(character_xp, (SELECT GROUP_CONCAT(rank ORDER BY rank) FROM ranks));
有什麼建議?
我也考慮過如下所述添加rank_xp_min和rank_xp_max列http://stackoverflow.com/questions/6995595/mysql-check-if-a-value-is-contained-in-a-range-interval但想如果可能的話,儘量避免這種情況 –