SQL 一列多个值



嗨,我什至不知道如何表述这个问题,但我会尽力而为。

我有一个名为 games 的表格,在这个表格中有 3 列,ID (INT)、纪元 (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)

现在我的问题是我只需要在用户中选择一个,假设我需要获取"用户"54235,它不能包含,因为它会与542355发生冲突,所以我该怎么办?我应该如何正确排列这些列以避免这种情况或简化一般情况?

这些

列的"正确排列"需要一些规范化。

你可以有第二个表,称为"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;
您可以

做的最简单的技巧是匹配"54235",而不是匹配"54235"。 也匹配逗号,它将解决问题。确保你的列逗号排列至少是正确的。

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

最新更新