我希望将游戏结果存储在一个表格中。每轮比赛将由2-10名球员进行。每位球员的得分在1-5分之间。我需要一种有效的方法来检索给定球员/得分范围的所有回合。例如:
select all rounds where Hamburger14 scored 5
select all rounds where Cheese3 scored 1
select all rounds where Hotdog99 scored 4
我的第一个想法是使用全文索引的varchar字段“player_score”并像这样填充它:
player1:0-player2:3-player3.1
然后如果我想要玩家1得分为5的所有回合我会这样做:
select * from rounds where match(player_score) against("player1.5")
如果玩家游泳池保持较小且得分仅为1-5,那么看起来它似乎有效,尽管我可能需要弄乱默认的mySQL停止列表或使用HEX值作为得分等。
但有些事情似乎非常丑陋。有什么建议吗?
可选:如果将来如果我想在给定球员和SCORE RANGE的情况下检索回合(例如,所有回合,其中playerX得分为3或更多),这将如何实现?
答案 0 :(得分:0)
FULLTEXT - 没有。
filter()
然后做
CREATE TABLE Rounds (
round_num SMALLINT UNSIGNED NOT NULL,
player VARCHAR(55) NOT NULL,
score TINYINT UNSIGNED NOT NULL,
PRIMARY KEY(round_num, player),
INDEX(player, score)
);
获取有关该轮的其他信息:
SELECT * FROM Rounds
WHERE player = "player1"
AND score = 5;