SQL一列多个值

时间:2016-04-27 17:50:49

标签: mysql sql sqlite

嗨,我不确定如何制定这个问题,但我会尽我所能。

我有一个名为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发生碰撞所以我该怎么办?我应该如何正确安排这些列以避免这种情况或一般简化它?

2 个答案:

答案 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”。匹配逗号,它也可以解决问题。 确保你的列逗号排列至少适当。

但这不是存储结果的正确方法。你应该有不同的表来进行映射。