嗨,我不确定如何制定这个问题,但我会尽我所能。
我有一个名为games的表,在这个表中有3列,ID(INT),epoch(INT)和用户(TEXT),现在每个用户列中有4到25个值的值,用逗号分隔,值为1到6个字符,例如:
ID, EPOCH, USERS
1, 1461779167, (123, 58234, 548245, 225122)
2, 1461774823, (326784, 54235, 6373, 3566, 384174)
3, 1461773423, (326784, 542355, 234, 351)
现在我的问题是我需要fetech只有一个用户让我们说我需要获取“用户”54235,它不能是CONTAINS因为它会与542355发生碰撞所以我该怎么办?我应该如何正确安排这些列以避免这种情况或一般简化它?
答案 0 :(得分:1)
这些列的“正确安排”需要一些规范化。
您可以拥有第二个表,称为“player_games”,其中包含:
列ID,游戏,播放器
然后通过插入player_games将用户与游戏相关联。
因此,如果玩家2与游戏5相关联,那么你可以:
INSERT INTO player_games (game, player) VALUES (5, 2);
然后,如果你需要获得与玩家2相关的所有游戏:
SELECT game FROM player_games WHERE player = 2;
如果你需要让所有玩家都参与游戏5:
SELECT player FROM player_games WHERE game = 5;
答案 1 :(得分:0)
最简单的黑客你可以做的不是匹配“54235”你可以匹配“54235”。匹配逗号,它也可以解决问题。 确保你的列逗号排列至少适当。
但这不是存储结果的正确方法。你应该有不同的表来进行映射。