我有一个表格,其中包含一个字符的等级列表,每个等级都与一个数值 (xp) 相关联。等级越高,需要的 XP 越多。我想知道构建查询以查找角色所属等级的最简单方法。这个想法是使用它是一个子查询,所以在选择字符时
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
但我想只用一列作为等级的下限
更新:
看起来INTERVAL
这是一条红鲱鱼,保留它用于搜索目的
如果我以编程方式构造查询,我可以为此使用INTERVAL()
函数(MySQL 文档):
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));
有什么建议吗?